JSONP请求PHP页面不起作用(跨域)

这是我的PHP页面(在不同的URL上)……

 stat({"online":1}); 

这是我的jQuery:

 $(document).ready(function(){ var url = 'http://blah.com/jsontest.php?callback=stat'; $.getJSON(url, function(data) { if (data.online !== undefined) { console.log('yay'); } }).error(function() { console.log('no'); }); }); 

由于某种原因,它总是记录’否’,即它运行错误function。

使用jQuery 1.5.2的任何想法?

首先,JSON-P不是JSON。 内容类型应该是application/javascript 。 某些浏览器可能会因为不安全而拒绝JSON-P作为JSON。

第二,getJSON期望你请求的URL有一个? 对于回调方法名称(你需要让你的PHP注意$_GET['callback'] )。

第三,如果修复不起作用,请查看Firebug / Chrome调试器/ Dragonfly /等中的Net选项卡,查看实际通过网络传输的数据。

有一些恶作剧包括“回调”function。 显然你没有返回一个对象,而是一个在原始客户端请求中提交的函数。 我只是模糊地理解所有这些意味着什么,但是,我确实有一些代码可以实现这一点:

服务器端:

  

客户端(这与$ .getJSON()相同):

 $.ajax({ type: "GET", url: serverUrl, dataType: 'jsonp', error: function(request, status) { // Do some error stuff }, success: function(data, textStatus, jqXHR) { var property = data.pop_singer; // equals "Britney Spears" // Do some successful stuff } 

});