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});
你有问题,因为这不是响应的实际看法:)
当你指定jsonp
或callback=?
它被替换了,它实际上在做什么: ?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});