$ .ajaxSetup()中的jquery Parsererror

时间:2011-05-12 02:52:37

标签: javascript ajax jquery parse-error

我目前正在研究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":[]}  
 ]

2 个答案:

答案 0 :(得分:2)

来自jQuery Ajax的错误documentation

的描述
  

错误(jqXHR,textStatus,errorThrown)

     

功能

     

一个功能   如果请求失败则调用。该   函数接收三个参数:   jqXHR(在jQuery 1.4.x中,   XMLHttpRequest)对象,一个字符串   描述错误的类型   发生了和一个可选的例外   对象,如果发生了一个。可能   第二个参数的值   (除了null)是“超时”,“错误”,   “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
} 

答案 1 :(得分:0)

听起来上面的代码工作得很好 - 它告诉你XMLHttpRequest返回错误消息"parsererror"。您可以通过检查错误函数中的e变量来了解更多相关信息。但是你提供的代码并没有导致错误,所以我们无法调试它。