我正在尝试使用 jquerygetJSON
方法从公共 API 获取 JSON 数据。getJSON
当我的请求回调执行时,我不断收到以下错误。
警告:资源解释为脚本,但使用 MIME 类型 text/html 传输
错误:未捕获的语法错误:意外的令牌:
我检查了响应的标头,果然,它设置为text\html
. 由于这是一个我无法控制的公共 API,我怎样才能轻松地请求和解析这个 JSON 数据?
作为参考,下面的链接是我试图获取的 JSON 数据的链接。
我正在尝试使用 jquerygetJSON
方法从公共 API 获取 JSON 数据。getJSON
当我的请求回调执行时,我不断收到以下错误。
警告:资源解释为脚本,但使用 MIME 类型 text/html 传输
错误:未捕获的语法错误:意外的令牌:
我检查了响应的标头,果然,它设置为text\html
. 由于这是一个我无法控制的公共 API,我怎样才能轻松地请求和解析这个 JSON 数据?
作为参考,下面的链接是我试图获取的 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);
});
在我的 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 格式将其返回给您。