jquery - 我如何在 JQuery 中处理返回的 header 类型为 "text/html"的 JSON 数据?

标签 jquery html json getjson

我正在尝试使用 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/

相关文章:

JavaScript 图像加载器不工作

javascript - SyntaxError : JSON. 解析:JSON 的第 1 行第 2 列出现意外字符

javascript - 当使用 jQuery 切换隐藏 div 时,使用 jquery 添加/更改 CSS

javascript - 向下一级将键/值对添加到 JSON 映射

php - json_decode 返回 JSON_ERROR_SYNTAX 但在线格式化程序说 JSON 没问题

javascript - CSS3 Card Flip,Jquery返回undefined函数

javascript - 禁用 Ctrl+A、Ctrl+C 键功能到 HTMl 页面

html - XSLT:将分组的 html 元素移动到节级别

java - 如何将图像发送到 GCP Vision API

html - 除了容器 DIV 外还有四个 div 的 CSS 样式