jQuery.ajax()在从x域源获取JSON时会得到parseError



这是我的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
    }
})
例如,

urlhttp://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调用提供的方法中

相关内容

  • 没有找到相关文章

最新更新