【发布时间】: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