【问题标题】:JSON data fetching from jquery is not supported by various browsers各种浏览器不支持从 jquery 获取 JSON 数据
【发布时间】:2011-06-09 14:16:06
【问题描述】:

我有一个 html 页面,我在其中取出静态 json 文件的数据,该文件被重命名为 .js 文件,并在本地服务器上放置一些位置,例如 10.211.20.62:8080/case1/county_json.js

我使用的代码在 ie 6、7、8 中可以正常工作,但在 google chrome、firefox 和其他浏览器中却没有。

Javascript 代码

function setfilter() {
$.getJSON('http://10.211.20.62:8080/case1/county_json.js', function (data) {
}).error(function(jqxhr, textStatus, errorThrown) {
alert(errorThrown);   
});
}


$(document).ready(function () { 
jQuery.support.cors = true;
setfilter();
});

应该是什么问题?请帮忙!

【问题讨论】:

  • 我确定您正在进行跨域调用。改用 JSONP!

标签: jquery json multiple-browsers


【解决方案1】:

如果我理解正确,您的 HTML 页面与数据不在同一台服务器上。那么问题就是同源策略(见https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript)。 MSIE 可能有效,因为您对本地区域有特殊规则。但一般情况下,您无法从其他服务器加载 JSON 数据。

【讨论】:

  • “你不能从不同的服务器加载 JSON 数据”所以...... JSONP 是干什么用的?
  • @balexandre:我的意思是“没有来自不同服务器的合作”。如果您可以更改服务器返回的数据格式,或者您可以添加跨站点 XMLHttpRequest 所需的标头,那么它将起作用。
【解决方案2】:

如果 URL 包含字符串“callback=?” (或类似的,由服务器端 API 定义),请求被视为 JSONP(http://api.jquery.com/jQuery.getJSON/)。

试试:

$.getJSON('http://10.211.20.62:8080/case1/county_json.js?callback=?', 函数(数据){ }).error(function(jqxhr, textStatus, errorThrown) { 警报(错误抛出);
});

【讨论】:

    猜你喜欢
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多