这是我的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 :
的资源选项卡中。此外,我收到每个ajax请求的警告Resource interpreted as Script but transferred with MIME type application/json.
。此外,x-domain请求似乎不是异步的,因为ajax调用之下的代码在error
回调执行之前执行。
所以为了澄清,我的目标是让ajax调用成功回调在每个请求上运行,解析的JSON对象为e
。此代码已经适用于本地json ajax调用,而不适用于x-domain调用。 x-domain调用返回的json是有效的,不应导致parsererrors。
如果有任何想法,请分享
由于
答案 0 :(得分:1)
尝试将?jsonp =添加到您网址的末尾。您通常需要指定一个回调来获取正确的JSONP
> http://api.justin.tv/api/channel/show/{0}.json?jsonp=
查看这两个网址之间的区别
http://api.justin.tv/api/channel/show/342.json?jsonp=
和
http://api.justin.tv/api/channel/show/342.json
?jsonp =在数据周围添加parens,以便您可以跨域使用它。
答案 1 :(得分:0)
您需要在jsonp
- http://api.jquery.com/jQuery.ajax/
$.ajax()
支持
您违反了same origin policy,您无法在您的域外制作XmlHttpRequests。 JSONP允许你解决这个问题。
我不知道justin.tv是否支持JSONP;基本上,它需要将它发送给你的响应包装在JSONP调用提供的方法中。