2011-05-12 71 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