我怎么可以处理在JQuery中JSON数据,这是被一个头型“text / html的”退换?(How

2019-10-17 05:06发布

我试图使用jQuery的, getJSON方法从公共API获取JSON数据。 我不断收到以下错误我的回调时getJSON请求执行。

警告:资源解释为脚本,但MIME类型文本转/ HTML

错误:未捕获的SyntaxError:意外的标记:

我检查了响应的头,果然,它被设置为text\html 。 由于这是我无法控制的公共API,我怎么能轻松地请求和解析这个JSON数据?

作为参考,下面的链接是链接到我试图获取JSON数据。

JSON请求( http://bitcoincharts.com/t/weighted_prices.json )

Answer 1:

如果你无法控制的MIME类型,使用jQuery.ajax代替jQuery.getJSON 。 然后在成功回调,你可以这样做:

jQuery.ajax({
    dataType: "text", //you may need this.
    success: function(data, textStatus, jqXHR) {
        var jsonData = JSON.parse(data);
        ....
    }
});

你可以尝试的另一件事是:

jQuery.ajax({
    dataType: "json",
    success: function(data, textStatus, jqXHR) {
        //data here will be a JavaScript object
        ....
    }
});

虽然我不知道,如果MIME类型不匹配,如果jQuery将抱怨。 这是值得一试,但。

编辑:在另一方面,你怎么样能够从脚本访问这些数据? 尽管这是一个公共的API,它的另一个服务器上,这样就违反同源策略。 当我做到以下几点:

jQuery.getJSON("http://bitcoincharts.com/t/weighted_prices.json", function(data) {
    console.log(data);
});

从我的浏览器的控制台,我看到以下错误:

XMLHttpRequest cannot load http://bitcoincharts.com/t/weighted_prices.json?_=1346263039525. Origin http://stackoverflow.com is not allowed by Access-Control-Allow-Origin.

你必须看到,如果比特币图表支持JSONP的选择。 否则,你唯一的选择是建立在服务器端,抓住这个数据,你用正确的mime-type返回回给你的JSON的东西。



文章来源: How can I process JSON data in JQuery, that's being returned with a header type of “text/html”?