JQuery JSONP跨域调用没有做任何事情

每当我通过jquery对我设置的任何页面(本地或我的服务器)进行JSONP调用时,我得到的就是静默处理。 Firebug报告200 OK,响应看起来不错。 我设置警报框以在成功或失败时弹出,但都不会出现。 我使用什么url似乎并不重要,没有任何东西弹出。

但是,如果我使用twitter json页面,那么我的成功提示框会按预期出现,所以我的回复显然有问题,但我不知道是什么。

作为实验,我复制了twitter json响应并将其上传到我的booroo.com域。 它应该是相同的,但仍然没有。 我将响应页面上的标题设置为“application / json”和utf-8但仍然没有。

请帮助,我现在花了一整天时间,我不知道还有什么可以尝试。

$.ajax({ dataType: 'jsonp', // url: 'http://booroo.com/json.asp?callback=?', url: 'http://twitter.com/users/usejquery.json?callback=?', success: function () { alert("Success"); }, error: function(x,y,z) { alert("error"+x.responseText); } }); 

响应json.asp文件包含以下经典的ASP标题,然后是从twitter复制的json响应(我已经尝试过其他没有任何成功。)

  ({"test_param":12345}); 

你有问题,因为这不是响应的实际看法:)

当你指定jsonpcallback=? 它被替换了,它实际上在做什么: ?callback=functioName ,它会使你的响应变为这样:

 {"test_param":12345} 

对此:

 functionName({"test_param":12345}); 

这是 JSONP工作所必需的。 查看更新后的URL,看看我的意思: http : //twitter.com/users/usejquery.json?callback = functionName

睡个好觉后,我已经解决了这个问题。 我没有意识到这两种响应格式之间存在差异。 当我使用我的浏览器询问推特时,响应中没有包含让我困惑的function名称。

 //JSON {"name":"stackoverflow","id":5} //JSONP func({"name":"stackoverflow","id":5});