1

我目前正在使用 jquery 开发一个程序。我的程序在 firefox 3.5 中运行良好,但直到我将浏览器升级到 firefox 4.0。从那时起,'parsererror' 一直没有显示出来,这让我很头疼。

我注意到这是 FIRST 'parsererror' 显示的代码的一部分:

$(document).ready( function() { 
   ...

   $.ajaxSetup({
      timeout: 10000,
      error: function(xhr, msg, e) {
        showMessage('HTTP error: ' + JSON.stringify(msg) + '.'); //this is the parsererror
      }    
   });  
   .
   .
})  

不仅如此,我的动态标签不再出现在我的页面中。我注意到每次如果删除此行' <script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>',它就会出现,但我的其他 jquery 元素不好。我不知道怎么了。也许它是某种不兼容问题,但我只是不知道从哪里开始修复。请帮忙。

编辑: 这是它返回的 json。这应该是用于我的动态菜单,它将创建您单击的选项卡 Evry 菜单。但这没有显示。

 [ 
      {"title": "File","submenus":[
         {"title": "Open","submenus":[]},         
         { "title": "New", "submenus":[]},
         { "title": "Save as", "submenus":[]},
         { "title": "Save", "submenus":[]}
      ]},
      { "title": "View","submenus":[]},
      { "title": "viewAll", "submenus":[]},
      { "title": "Close","submenus":[]},
      {"title":"jQgrid", "submenus":[]}  
 ]
4

2 回答 2

2

来自 jQuery Ajax 的错误文档的描述

错误(jqXHR,textStatus,errorThrown)

功能

请求失败时调用的函数。该函数接收三个参数:jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象、描述发生的错误类型的字符串和可选的异常对象(如果发生)。第二个参数(除了 null)的可能值是“timeout”、“error”、“abort”和“parsererror”。发生 HTTP 错误时,errorThrown 会接收 HTTP 状态的文本部分,例如“未找到”或“内部服务器错误”。从 jQuery 1.5 开始,错误设置可以接受一个函数数组。每个函数都会被依次调用。注意:跨域脚本和 JSONP 请求不调用此处理程序。这是一个 Ajax 事件

在您的代码中,您有

JSON.stringify(msg)

查看 jQuery 文档,您会看到第二个参数是一个字符串,而不是您期望的 JSON 对象。解析器正在查看字符串并抛出您所看到的解析错误。

现在,如果发生错误并且对象说有错误。JSON 要求名称周围有双引号。所以人们认为:

{
  foo : "bar",
  color : "red",
  num : 1
} 

是有效的 JSON,但不是。以下是有效的。

{
  "foo" : "bar",
  "color" : "red",
  "num" : 1
} 
于 2011-05-12T03:10:07.730 回答
0

听起来上面的代码运行良好 - 它告诉您 XMLHttpRequest 返回了错误消息"parsererror"。您可能可以通过检查e错误函数中的变量来了解更多信息。但是您提供的代码不会导致错误,因此我们无法调试它。

于 2011-05-12T04:07:58.883 回答