如何使用PHP和jquery获取jsonp?
Posted
技术标签:
【中文标题】如何使用PHP和jquery获取jsonp?【英文标题】:How do you use PHP and jquery get jsonp? 【发布时间】:2012-01-20 21:19:56 【问题描述】:我有这个 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']
?以及如何解决这个问题?
【问题讨论】:
【参考方案1】:您没有设置一个名为“回调”的参数,因此它没有在 $_GET 变量中设置。
您可以通过以下方式修复错误消息:
$callback = "";
if(array_key_exists('callback', $_GET) == TRUE)
$callback = $_GET['callback'];
但是我认为您可能没有误解 jQuery 中的 .ajax 调用——成功时调用的 javascript 函数不会传递给服务器;它只保存在 jQuery 中。
【讨论】:
【参考方案2】:为了让您的 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;
);
);
【讨论】:
以上是关于如何使用PHP和jquery获取jsonp?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 jQuery ajax 调用中将 JSON 响应解析为 JSONP?
❤️一个有趣小案例教你如何使用原生js使用和jquery应该如何使用jsonp❤️