JSON请求.each在IE7中不起作用,但在其他浏览器上工作正常

时间:2013-03-08 21:21:39

标签: jquery ajax json internet-explorer-7

您好,我在我的网站上实现了一个简单的getJSON调用。它工作正常,但IE7似乎输出和错误。谁能告诉我发生了什么?

    var output = '';
    var fullurl = 'myurl'
    $.getJSON(fullurl, function(json) {

    $.each(json, function(i,d) {
        output = '<span style="font-size:11px;"><b>Name :</b> '+d.Name+'</span><br>';
        output += '<span style="font-size:11px;"><b>Date :</b> '+d.Date+'</span><br><br>';
        output += '<span style="font-size:11px;"><b>Description :</b> '+d.Description+'</span><br>'; 
    }); 
    $('#description').append(output);

弹出两个错误

 Error: Object doesn't support this property or method
 Error: Expected identifier, string or number

任何帮助将不胜感激!

谢谢。

1 个答案:

答案 0 :(得分:2)

解决这些问题的最佳方法是将IE的副本放入IE7仿真中,然后使用F12启动调试器。然后,您可以在$.each()行上设置断点并检查JSON调用的结果。然后,您可以在.each()迭代内部进一步设置断点,逐步执行每个断点,直到遇到错误并查看导致错误的数据/代码。 IE控制台也可以准确地告诉您导致错误的代码行。

如果你想让我们猜出可能出错的地方,我猜这是:

  1. 如果您没有获得任何JSON数据,则无法运行.each()input永远不会被初始化。当您尝试执行$('#description').append(output);时,output可能未定义,从而导致错误。

  2. 此外,input应声明为本地变量。

  3. 此外,您当前的代码不会累积循环的所有迭代中的input值 - 它只是最后一次迭代。我不确切地知道你的意图是什么,但你可能想要在循环外初始化input并在循环内使用+=来获取所有三行。这将累积,而不是替换每个循环。

  4. 以下是包含这些更改的代码:

    var fullurl = 'myurl';
    $.getJSON(fullurl, function(json) {
        var output = "";
        $.each(json, function(i,d) {
            output += '<span style="font-size:11px;"><b>Name :</b> '+d.Name+'</span><br>';
            output += '<span style="font-size:11px;"><b>Date :</b> '+d.Date+'</span><br><br>';
            output += '<span style="font-size:11px;"><b>Description :</b> '+d.Description+'</span><br>'; 
        }); 
        $('#description').append(output);
    });