【问题标题】:Bug with combination of: jQuery 1.4, ajax/json, Firebug Lite and IE 8错误组合:jQuery 1.4、ajax/json、Firebug Lite 和 IE 8
【发布时间】:2010-10-08 23:12:35
【问题描述】:

我刚刚得出结论,无论我尝试什么,jQuery 的 ajax 调用都无法处理 IE 8 中的 JSON 数据。我发现我可以使用 jQuery 1.3.2 库,这解决了问题,但 1.4 根本不会与 JSON ajax 请求打交道。即使返回的 JSON 数据非常简单,毫无疑问它的格式是无效的。例如:

{"x":"a"}

这与我是使用 Java servlet 返回 JSON 数据还是使用简单的固定文本文件无关。无论 dataType 还是 contentType。不管 GET 还是 POST。不管我使用的是 $.ajax 还是 $.getJSON。这一切都适用于 Firefox 3.6。

然后我突然想到要删除对 Firebug Lite 的引用并且它工作了!突然问题消失了。无论修改响应中的 contentType(即在 servlet 中)或我在请求中指定的 dataType,它都能正常工作。

如果我再次链接到 Firebug Lite,问题就会再次出现……即使我的代码从未真正使用过它。

有没有人见过这种行为,有没有人有修复或解决方法?我不想不得不停止使用 Firebug Lite。感谢您的任何见解。同样,仅当您结合使用 jQuery 1.4、Firebug Lite、JSON 数据和 IE 8 时才会出现此问题。

如果重要的话,这里是对 servlet 的 ajax 调用:

$.ajax({
 cache: false,
 url:"http://localhost:8080/Performance_Reporting/TestServlet",
 type:"GET",
 contentType: "application/json",
 dataType: "json",
 timeout:30000,
 success: function(d, status, req)
 {
  $("#result").text(d.x);
 },
 error: function(req, status, err)
 {
  $("#result").text(req.responseText);
 }
})

【问题讨论】:

  • 对于示例代码中缺少换行符,新手致歉。显然我需要阅读一些常见问题解答。
  • 文件从哪里托管?当您运行 Firebug lite 时,您可能会看到跨域问题,并且响应为空。
  • Gaaaah 我整天都在与 IE7/jQuery/JSON 问题作斗争,结果是 Firebug Lite 导致了这个问题。 +1 引起我的注意。现在我要去打一些非常非常硬的东西......

标签: jquery json internet-explorer firebug


【解决方案1】:

我实际上也看到了纯 HTML 响应的同样问题。

【讨论】:

    【解决方案2】:

    我目前无法让 web 服务输出正确的 contentType,但是通过如下修改我的 javascript 代码,我已经能够在最新版本的 jQuery 中使用 $.ajax()...

    $.ajax({
     cache: false,
     url:"http://localhost:8080/Performance_Reporting/TestServlet",
     type:"GET",
     contentType: "application/json",
     dataType: "text",
     timeout:30000,
     success: function(d, status, req)
     {
      $("#result").text($.parseJSON(d).x);
     },
     error: function(req, status, err)
     {
      $("#result").text(req.responseText);
     }
    })
    

    不同之处在于让服务期待 TEXT 而不是 JSON,然后解析 JSON....

    d = $.parseJSON(d);
    

    Bodge,但已修复。

    【讨论】:

      猜你喜欢
      • 2012-10-16
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      相关资源
      最近更新 更多