我正在尝试使用 jquery、getJSON
方法从公共(public) API 获取 JSON 数据。当我的 getJSON
请求执行回调时,我不断收到以下错误。
Warning: Resource interpreted as Script but transferred with MIME type text/html
Error: Uncaught SyntaxError: Unexpected token :
我检查了响应的 header ,果然,它被设置为 text\html
。由于这是我无法控制的公共(public) 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 是否会报错。不过值得一试。
编辑:另一方面,您如何从脚本中访问该数据?尽管它是一个公共(public) API,但它位于另一台服务器上,因此会违反同源策略。当我执行以下操作时:
jQuery.getJSON("http://bitcoincharts.com/t/weighted_prices.json", function(data) {
console.log(data);
});
在我的 Chrome 控制台中,我看到以下错误:
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 类型以 JSON 格式将其返回给您。
关于jquery - 我如何在 JQuery 中处理返回的 header 类型为 "text/html"的 JSON 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12183402/