首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >简单的jQuery,PHP和JSONP示例?

简单的jQuery,PHP和JSONP示例?
EN

Stack Overflow用户
提问于 2011-07-25 03:16:51
回答 7查看 112.1K关注 0票数 54

我正面临着同源策略的问题,通过对这个主题的研究,我发现对于我的特定项目来说,最好的方法是使用JSONP来做跨源请求。

我一直在读this article from IBM about JSONP,但是我不是100%清楚到底是怎么回事。

在这里,我所要求的是一个简单的jQuery>PHP JSONP请求(或者其他术语;) -像这样的(显然它是不正确的,它只是为了让您了解我想要实现的东西: )

jQuery:

代码语言:javascript
复制
$.post('http://MySite.com/MyHandler.php',{firstname:'Jeff'},function(res){
    alert('Your name is '+res);
});

PHP:

代码语言:javascript
复制
<?php
  $fname = $_POST['firstname'];
  if($fname=='Jeff')
  {
    echo 'Jeff Hansen';
  }
?>

我该如何将其转换为正确的JSONP请求呢?如果我将HTML存储在要返回的结果中,也可以吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-07-25 03:20:25

当您在外部域上使用$.getJSON时,它会自动操作JSONP请求,例如我的tweet slider here

如果您查看源代码,就会发现我正在使用.getJSON调用Twitter API。

因此,您的示例应该是:这是经过测试并工作的(您可以转到http://smallcoders.com/javascriptdevenvironment.html查看它的实际操作)

代码语言:javascript
复制
//JAVASCRIPT

$.getJSON('http://www.write-about-property.com/jsonp.php?callback=?','firstname=Jeff',function(res){
    alert('Your name is '+res.fullname);
});

//SERVER SIDE
  <?php
 $fname = $_GET['firstname'];
      if($fname=='Jeff')
      {
          //header("Content-Type: application/json");
         echo $_GET['callback'] . '(' . "{'fullname' : 'Jeff Hansen'}" . ')';

      }
?>

注意到?callback=了吗?和+res.fullname

票数 90
EN

Stack Overflow用户

发布于 2011-07-25 03:25:40

首先,您不能使用JSONP发出POST请求。

基本上发生的是动态地插入脚本标记来加载数据。因此,只有GET请求才是可能的。

此外,您的数据必须包装在一个回调函数中,该函数在请求完成后调用,以便将数据加载到变量中。

整个过程都是由jQuery自动完成的。不过,仅仅在外部域上使用$.getJSON并不总是有效的。我可以根据个人经验来判断。

最好的做法是添加&callback=?到你的网址。

在服务器端,您必须确保您的数据被包装在这个回调函数中。

即。

代码语言:javascript
复制
echo $_GET['callback'] . '(' . $data . ')';

编辑:

还没有足够的代表来评论Liam的回答,所以解决方案在这里。

替换Liam的线路

代码语言:javascript
复制
 echo "{'fullname' : 'Jeff Hansen'}";

使用

代码语言:javascript
复制
 echo $_GET['callback'] . '(' . "{'fullname' : 'Jeff Hansen'}" . ')';
票数 21
EN

Stack Overflow用户

发布于 2014-03-13 02:37:14

更多建议

JavaScript:

代码语言:javascript
复制
$.ajax({
        url: "http://FullUrl",
        dataType: 'jsonp',
        success: function (data) {

            //Data from the server in the in the variable "data"
            //In the form of an array

        }

});

PHP CallBack:

代码语言:javascript
复制
<?php

$array = array(
     '0' => array('fullName' => 'Meni Samet', 'fullAdress' => 'New York, NY'),
     '1' => array('fullName' => 'Test 2', 'fullAdress' => 'Paris'),
);

if(isset ($_GET['callback']))
{
    header("Content-Type: application/json");

    echo $_GET['callback']."(".json_encode($array).")";

}
?>
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6809053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档