【问题标题】:Issues with $.getJSON in IE8IE8 中 $.getJSON 的问题
【发布时间】: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


【解决方案1】:

如果您的数据未定义,您可能无法获得成功的响应。尝试使用以下 sn -p 来查看是否可以隔离错误。

$.getJSON('http://...')
     .done(function(response) { console.log('complete'); })
     .fail(function(error) { console.log('error'); });

如果控制台输出“错误”,您可以从那里开始工作。您可以单步调试或将错误结果输出到控制台。

【讨论】:

  • .error 不正确,您应该使用.fail.success.error 在 1.8 中已弃用
  • 此外,在错误回调中,您还应该记录第二个和第三个参数。是由 jquery 生成的文本状态和错误消息。
  • 感谢 Kevin B,您说的完全正确。在过去的 3 个月里,我一直在做一个仍在使用 jQuery 1.7 的项目,而“错误”只是在我的脑海中。
猜你喜欢
  • 1970-01-01
  • 2012-01-21
  • 1970-01-01
  • 2011-01-20
  • 2013-10-10
  • 1970-01-01
  • 2010-11-06
  • 1970-01-01
  • 2010-11-09
相关资源
最近更新 更多