我有这个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']
?这个问题将如何解决?
答案 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;
});
});