这是我的Javascript
$.ajax({
"url": url,
"dataType" : "json",
"async" : false,
"success" : function(e) {
retval = e;
},
"complete" : function(jqXHR, textStatus) {
debugger;
},
"error" : function(jqXHR, textStatus, errorThrown) {
debugger;
},
"xhrFields": {
withCredentials: true
}
})
例如, url
为http://api.justin.tv/api/channel/show/{0}.json
({0}
由通道名称代替)
脚本在textStatus "parseserror"出错时中断。我还注意到jqXHR
没有responseText,而是我试图加载的所有json文件都出现在Uncaught SyntaxError: Unexpected token :
的资源选项卡中。此外,我得到警告Resource interpreted as Script but transferred with MIME type application/json.
为每个ajax请求。此外,x域请求似乎不是异步的,因为ajax调用下面的代码在error
回调执行之前执行。
所以澄清一下,我的目标是ajax调用成功回调运行在每个请求与解析JSON对象作为e
。这段代码已经适用于本地json ajax调用,只是不适用于x域调用。x-domain调用返回的json是有效的,不应该导致parsererrors。
如果有人有任何想法,请分享
谢谢
尝试在url的末尾添加?jsonp=。通常需要指定一个回调来获得正确的JSONP
> http://api.justin.tv/api/channel/show/{0}.json?jsonp=
查看这两个url的区别
http://api.justin.tv/api/channel/show/342.json?jsonp =
和
http://api.justin.tv/api/channel/show/342.json?Jsonp =在数据周围添加父括号,以便您可以跨域使用它。
您将需要查看$.ajax()
中的jsonp
支持—http://api.jquery.com/jQuery.ajax/
你违反了同源策略,你不能让xmlhttprequest到你的域以外的域。JSONP允许您绕过这个。
我不知道justin。tv支持JSONP;基本上,它需要将发送给你的响应包装在JSONP调用提供的方法中