我试图使用jQuery的, getJSON
方法从公共API获取JSON数据。 我不断收到以下错误我的回调时getJSON
请求执行。
警告:资源解释为脚本,但MIME类型文本转/ HTML
错误:未捕获的SyntaxError:意外的标记:
我检查了响应的头,果然,它被设置为text\html
。 由于这是我无法控制的公共API,我怎么能轻松地请求和解析这个JSON数据?
作为参考,下面的链接是链接到我试图获取JSON数据。
JSON请求( http://bitcoincharts.com/t/weighted_prices.json )
如果你无法控制的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”?