2011-05-12 68 views
1

我目前正在jquery中的程序工作。我的程序在Firefox 3.5中运行良好,但是直到我将浏览器升级到Firefox 4.0。从那以后,'parsererror'从未失败过,它让我头痛不已。

我已经通知这是我的代码的一部分,首先“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":[]} 
] 
+0

你能提供JSON数据的样子吗? – 2011-05-12 02:57:18

+0

我的JSON来自服务器端。我只是将其转换为json,以便程序能够读取它。这里是我的示例代码:http://stackoverflow.com/questions/5309114/why-is-it-that-i-cannot-sort-my-grid-in-jqgrid-everytime-i-clicked-the-column-hea – jayAnn 2011-05-12 03:07:18

回答

2

说明从jQuery的阿贾克斯的错误documentation

error(jqXHR, textStatus, errorThrown)

Function

A function to be called if the request fails. The function receives three arguments: The jqXHR (in jQuery 1.4.x, XMLHttpRequest) object, a string describing the type of error that occurred and an optional exception object, if one occurred. Possible values for the second argument (besides null) are "timeout", "error", "abort", and "parsererror". When an HTTP error occurs, errorThrown receives the textual portion of the HTTP status, such as "Not Found" or "Internal Server Error." As of jQuery 1.5, the error setting can accept an array of functions. Each function will be called in turn. Note: This handler is not called for cross-domain script and JSONP requests. This is an Ajax Event

在你的代码有

JSON.stringify(msg) 

在jQuery的文档看,你会看到,第二个参数是一个字符串,而不是像你一样的JSON对象正期待着它。解析器正在看到该字符串并引发您所看到的解析错误。

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

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

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

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

感谢您的答案,但我仍然无法得到它。如果我把'JSON.stringify(味精)',它会显示'HTTP错误:“parsererror”。如果我删除了JSON.stringify,它也会显示相同的消息,但只有双引号'HTTP error:parsererror'。 – jayAnn 2011-05-12 03:19:15

+0

从服务器返回的JSON无效。 – epascarello 2011-05-12 03:25:30

+0

所以我如何解决它在我上面的代码? – jayAnn 2011-05-12 03:29:13

0

这听起来像上面的代码完美的作品 - 它告诉你的是,XMLHttpRequest的与消息"parsererror"返回错误。您可以通过检查错误函数中的e变量来了解更多信息。但是您提供的代码不会导致错误,所以我们无法调试它。

+0

好吧,正如我在Firefox 3.5中观察到的那样,完全没有问题。我可以添加,删除,搜索,从服务器过滤数据。它只在Firefox 4.0中。我遇到了这个错误。怎么会这样...?那我的动态标签呢?嗯...... – jayAnn 2011-05-12 04:13:11

+0

浏览器以不同方式解析从服务器返回的数据 - 也许这是更高版本的FF中更严格的JSON或XML解析器。但是,包含在您的问题中的代码不会影响这种或那种方式 - 问题是来自服务器的数据。所以我们不能在没有看到数据的情况下进行调试。如果没有看到任何代码,就很难用标签猜测问题。 – nrabinowitz 2011-05-12 04:59:10

+0

好的,谢谢你的信息。我想我只需要先与我的标签一起工作。 – jayAnn 2011-05-12 05:04:09