RLH*_*RLH 1 html jquery json getjson
我正在尝试使用jquery getJSON方法从公共API获取JSON数据.当我的getJSON请求的回调执行时,我不断收到以下错误.
警告:资源被解释为脚本,但使用MIME类型text/html进行传输
错误:未捕获的SyntaxError:意外的令牌:
我已经检查了响应的标题,当然,它已设置为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);
....
}
});
Run Code Online (Sandbox Code Playgroud)
你可以尝试的另一件事是:
jQuery.ajax({
dataType: "json",
success: function(data, textStatus, jqXHR) {
//data here will be a JavaScript object
....
}
});
Run Code Online (Sandbox Code Playgroud)
虽然我不确定如果mime类型不匹配,jQuery是否会抱怨.不过值得一试.
编辑:另一方面,您如何从脚本中访问该数据?即使它是一个公共API,它也在另一台服务器上,因此会违反同源策略.当我执行以下操作时:
jQuery.getJSON("http://bitcoincharts.com/t/weighted_prices.json", function(data) {
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
在我的Chrome控制台中,我看到以下错误:
XMLHttpRequest cannot load http://bitcoincharts.com/t/weighted_prices.json?_=1346263039525. Origin http://stackoverflow.com is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)
您必须查看BitCoin Charts是否支持JSONP替代方案.否则,你唯一的选择是建立在服务器端,抓住这个数据,你用正确的mime-type返回回给你的JSON的东西.