【发布时间】:2015-04-01 18:03:12
【问题描述】:
不幸的是,我需要支持 IE8,但我什至无法获得一个简单的$.getJSON 请求才能正常工作。
代码如下:
url = "http://www.somejson.com/data.json";
$.getJSON(url, function(data) {
var funds = []; var benchmarks = [];
funds.push(data.funds); benchmarks.push(data.benchmarks);
$.each( data.funds, function(key, value) {
var ticker = key;
// Monthly:
var appendToDaily = function(ticker) {
$.each($("#"+ticker), function(key, value, index) {
$(this).children("td").filter(":nth-child(1)").html( '<td>'+funds[0][ticker].name+'</td>' );
$(this).children("td").filter(":nth-child(2)").html( '<td>'+ticker+'</td>' );
$(this).children("td").filter(":nth-child(3)").html( '<td>'+funds[0][ticker].fund.inception_date+'</td>' );
});
};
appendToDaily(ticker);
});
});
此代码在 Chrome、Firefox 和 IE9+ 中运行良好。
我尝试了一些方法来解决这个问题,但没有成功:
- 我尝试改用
$.ajax方法。 - 按照建议 here 将 JSON 数据的标头设置为:
response.setContentType("text/javascript; charset=UTF-8");。 - 在
$.getJSON之前添加了这个 sn-p:$.ajaxSetup({ cache: false });然后在终止呼叫之前将其重置为 true,如建议的 here。 - 我已明确包含
json2.js以防万一。 - 恢复为 JQuery
1.11.0.min.js以防万一。
当我尝试运行此代码时,我收到几个错误,提示“fund”和“funds”未定义。我还注意到$.getJSON 回调函数中绝对没有任何东西会触发;甚至 alert() 也会被忽略。
我有点不知所措,所以任何建议都将不胜感激!提前致谢。
【问题讨论】:
-
检查是否在 IE8 中启用了 Javascript 或其他阻止脚本运行的安全设置 -- support.microsoft.com/en-us/gp/howtoscript
-
嗯,JS好像开启了;那里没有问题。好主意,但我敢肯定它会像这样很容易被遗漏。 -_-
-
第 1 步:找出它不工作的原因。看看你的控制台,即使 IE8 也有一个。在开始盲目“修复”它之前,先了解问题所在。
-
这是 JSON 请求,还是 jsonp 请求。
-
它是 JSON。我一直在看控制台,它只说“资金未定义”和“资金未定义”。
标签: jquery ajax json internet-explorer-8