IE8中$ .getJSON的问题

时间:2015-04-01 18:03:13

标签: jquery ajax json internet-explorer-8

我很遗憾地需要支持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之前添加了此代码段:$.ajaxSetup({ cache: false });,然后在建议here终止呼叫之前将其重置为true。
  • 我已明确包含json2.js以防万一。
  • 为了以防万一,还原为JQuery 1.11.0.min.js

当我尝试运行此代码时,我收到了一些错误,说“&#34; fund&#34;和&#34;基金&#34;未定义。我还注意到$.getJSON回调函数内部没有任何内容触发;即使是alert()也会被忽略。

我有点在我的智慧结束,所以任何建议都将不胜感激!提前谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

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