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です。これはおそらく、クリックしたすべてのメニューのタブを作成する動的メニュー用です。しかし、これは表示されません。

 [ 
      {"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)

関数

リクエストが失敗した場合に呼び出される関数。この関数は 3 つの引数を受け取ります。jqXHR (jQuery 1.4.x では XMLHttpRequest) オブジェクト、発生したエラーの種類を説明する文字列、およびオプションの例外オブジェクト (発生した場合) です。2 番目の引数 (null 以外) に指定できる値は、"timeout"、"error"、"abort"、および "parsererror" です。HTTP エラーが発生すると、errorThrown は「Not Found」や「Internal Server Error」などの HTTP ステータスのテキスト部分を受け取ります。jQuery 1.5 以降、エラー設定は関数の配列を受け入れることができます。各関数が順番に呼び出されます。注: このハンドラは、クロスドメイン スクリプトおよび JSONP リクエストでは呼び出されません。これは Ajax イベントです

あなたのコードでは

JSON.stringify(msg)

jQuery のドキュメントを見ると、2 番目の引数が文字列であり、期待しているような 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 に答える