2011-05-12 16 views
1

私は現在jqueryのプログラムで作業しています。私のプログラムはFirefox 3.5でうまく動作しますが、Firefoxを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です。これは、あなたがクリックしたタブエビメニューを作成する私のダイナミックメニューのためのものです。しかし、これは表示されません。あなたのコードで

[ 
     {"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データのサンプルを提供できますか? –

+0

My 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

答えて

2

のjQueryのAjaxのエラーから説明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

あなたはjQueryのドキュメントを見てみると

JSON.stringify(msg) 

を持っている、あなたは、2番目の引数は文字列ではないことがわかりますあなたのようなJSONオブジェクトがそれを期待しています。パーサーが文字列を見て、あなたが見ている解析エラーをスローします。

エラーが発生していて、オブジェクトがエラーがあると言っている場合。 JSONでは、名前の前後に二重引用符が必要です。だから人々は考えます:

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

は有効なJSONですが、そうではありません。以下は有効です。

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

答えに感謝しますが、私はまだそれを得ることができません。 'JSON.stringify(msg)'を入力すると、 'HTTPエラー: "parsererror"と表示されます。 JSON.stringifyを削除すると、同じメッセージが表示されますが、二重引用符( 'HTTP error:parsererror')は表示されません。 – jayAnn

+0

サーバーから返されているJSONが無効です。 – epascarello

+0

私はどのように上記のコードで修正できますか? – jayAnn

0

上記のコードは完璧に動作のようですね - XMLHttpRequestのメッセージ"parsererror"でエラーを返したことを知らせるています。エラー機能の変数eを調べると、おそらくそれについてもっと知ることができます。しかし、あなたが提供したコードはエラーの原因ではないので、デバッグする方法はありません。

+0

私はfirefox 3.5で何を観察したように、まったく問題はありません。私は、サーバーからデータを追加、削除、検索、フィルタリングすることができます。その唯一のFirefox 4.0です。私はこのエラーに会った。どのようにすることができます...?私のダイナミックなタブはどうですか? Hmmmm .... – jayAnn

+0

ブラウザは、サーバーから返されたデータを別の方法で解析しています。FFの後のバージョンではJSONまたはXMLパーサーがより厳密になっている可能性があります。しかし、あなたの質問に含まれているコードは、このやり方に影響しません - 問題はサーバーからのデータです。だから私たちはそのデータを見ることなくそれをデバッグすることはできません。そして、コードを見ずにタブで問題を推測するのはかなり難しいでしょう。 – nrabinowitz

+0

大丈夫、その情報をありがとう。私はちょうど私のタブで最初に働かなければならないと思います。 – jayAnn