错误与组合: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