错误与组合:jQuery 1.4,ajax / json,Firebug Lite和IE 8

我刚刚得出的结论是,无论我尝试了什么,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的参考和IT工作! 突然之间,问题消失了。 它的工作原理与响应中的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);
 }
})

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


我目前无法获得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,但是固定的。

链接地址: http://www.djcxy.com/p/46093.html

上一篇: Bug with combination of: jQuery 1.4, ajax/json, Firebug Lite and IE 8

下一篇: array of parameterized types