【问题标题】:JSON request for .each not working in IE7 but works fine on other browers.each 的 JSON 请求在 IE7 中不起作用,但在其他浏览器上运行良好
【发布时间】:2013-03-09 05:35:28
【问题描述】:

您好,我在我的网站上实现了一个简单的 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

任何帮助将不胜感激!

谢谢。

【问题讨论】:

  • 那是什么错误
  • output 定义在哪里?
  • @RocketHazmat 在完整网址之上,我会更新代码。

标签: jquery ajax json internet-explorer-7


【解决方案1】:

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

如果您想让我们猜测可能是什么问题,以下是我的猜测:

  1. 如果你没有得到任何 JSON 数据,那么就没有什么可以运行 .each() 并且 input 永远不会被初始化。然后当您尝试执行$('#description').append(output); 时,output 可能未定义,从而导致错误。

  2. 此外,input 应声明为局部变量。

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

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

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);
});

【讨论】:

  • 已修复!谢谢。你能通过IE7 Emulation向我解释一下吗?
  • 如果您使用 F12 调出 IE 调试窗口,该窗口有一个浏览器模式菜单,您可以在其中选择 IE7。
  • @BaconJuice 它只存在于 IE8+ 如果你在 IE9 中进行调试,你可以让它以 IE7 模式呈现页面以测试 IE7,而无需安装 IE7,同时给你一个强大的调试器来帮助发现问题。
  • @BaconJuice - 在旧版本的 IE 中,必须单独安装调试器。在较新的版本中,它会自动可用。
猜你喜欢
  • 2023-04-01
  • 2017-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
相关资源
最近更新 更多