我正在使用Jquery 1.6.2。
这有效:
$.getJSON("http://b.webvm.net/?jsoncallback=?",
function(data) {
alert("OK");
});
});
但这不是:
$.getJSON("http://isp123.co.uk/cw/NorthWales/test.txt?jsoncallback=?",
function(data){
alert("OK");
});
});
两个远程文件看起来都相同:
http://b.webvm.net/?jsoncallback=?
和
http://isp123.co.uk/cw/NorthWales/test.txt?jsoncallback=?
然而警告消息永远不会在第二个例子中被触发。
答案 0 :(得分:5)
文本文件不像其他链接那样提供回调函数。 jQuery实际上并没有调用http://b.webvm.net/?jsoncallback=?但是像http://b.webvm.net/?jsoncallback=jQuery2239203480932480392849032809这样的东西然后在你的脚本中调用该函数:
jQuery2239203480932480392849032809({"name" : "hello world"});
另一方面,文本文件即使在jQuery添加回调函数http://isp123.co.uk/cw/NorthWales/test.txt?jsoncallback=jQuery2239203480932480392849032809返回
时也不调用任何函数({"name" : "hello world"});
要解决此问题,您可以在ajax请求中使用jsonpCallback
参数来强制jQuery使用静态函数,然后将json包装在其中。
例如,如果您将jsonpCallback
设置为“mycallback”,那么您的文本文件应该返回:
mycallback({"name" : "hello world"});
答案 1 :(得分:0)
我注意到第一个示例是使用mime类型“text / html”返回的,第二个示例是以“text / plain”返回的。您的浏览器可能无法正确解释“text / plain”mime类型。尝试以text / html或application / json
返回第二个