你如何使用PHP和jquery获取jsonp?

时间:2011-12-15 05:47:42

标签: php jquery get jsonp

我有这个PHP:

$response = 'success';
$response = json_encode($response);
echo $_GET['callback'] . '('.$response.')';

和这个jQuery:

$.ajax({url: "/*url*/?invite="+getinvite+"&api="+api, dataType:"jsonp", 
    success: function(response){/*do stuff*/}});

在我的笔记本电脑上的XAMPP上工作得很好。然后,当我把它放在我的服务器上时,它给了我这个错误:Undefined index: callback

为什么不让我设置$_GET['callback']?这个问题将如何解决?

2 个答案:

答案 0 :(得分:3)

您没有设置名为'callback'的参数,因此未在$ _GET变量中设置。

您可以通过执行以下操作来修复错误消息:

$callback = "";
if(array_key_exists('callback', $_GET) == TRUE){
    $callback = $_GET['callback'];
}

但是我不认为你可能误解了jQuery中的.ajax调用 - 成功调用的javascript函数没有传递给服务器;它只存放在jQuery中。

答案 1 :(得分:1)

简化您的ajax调用, 使用专为JSONP响应设计的getJson方法。

http://api.jquery.com/jQuery.getJSON/

这将自动创建一个回调函数名称,该名称将作为参数传递给jsonp api。 页面上的示例:

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
  {
    tags: "cat",
    tagmode: "any",
    format: "json"
  },
  function(data) {
    $.each(data.items, function(i,item){
      $("<img/>").attr("src", item.media.m).appendTo("#images");
      if ( i == 3 ) return false;
    });
  });