2011-07-11 37 views
0

私のJSONデータは、このようなものです:私はjQueryのレディ機能でこのjqGrid宣言を使用していjqgrid JSONデータparsererror

{ 
    "total": "3", 
    "page": "1", 
    "records": "21", 
    "rows": [ 
     { 
      "id": "6007", 
      "cell": [ 
       "6007", 
       "xxx", 
       "", 
       "22.2" 
      ] 
     }, 
     { 
      "id": "6008", 
      "cell": [ 
       "6008", 
       "xxx", 
       "", 
       "22.2" 
      ] 
     }, 
     { 
      "id": "6009", 
      "cell": [ 
       "xxx", 
       "xxx", 
       "", 
       "22.2" 
      ] 
     }, 
     { 
      "id": "6011", 
      "cell": [ 
       "6011", 
       "xxx", 
       "", 
       "22.2" 
      ] 
     }, 
     { 
      "id": "6012", 
      "cell": [ 
       "6012", 
       "xxx", 
       "", 
       "22.2" 
      ] 
     }, 
     { 
      "id": "6013", 
      "cell": [ 
       "6013", 
       "xxx", 
       "", 
       "22.2" 
      ] 
     }, 
     { 
      "id": "6014", 
      "cell": [ 
       "6014", 
       "xxx", 
       "", 
       "22.2" 
      ] 
     }, 
     { 
      "id": "6015", 
      "cell": [ 
       "6015", 
       "xxx", 
       "", 
       "22.2" 
      ] 
     }, 
     { 
      "id": "6016", 
      "cell": [ 
       "6016", 
       "xxx", 
       "", 
       "22.2" 
      ] 
     }, 
     { 
      "id": "6017", 
      "cell": [ 
       "6017", 
       "xxx", 
       "", 
       "22.2" 
      ] 
     } 
    ] 
} 

jQuery('#jqGrid1').jqGrid({ 
       caption: 'test grid', 
       url: 'myurl', 
       datatype: 'json', 
       colNames: ["Column1", "Column2", "Weight", "NetWeight"], 
       colModel: [ 
        { "index": "Id", "width": 50, "name": "PartId" }, 
        { "index": "Name","width": 100, "name": "CHNPartName" }, 
        { "index": "Weight", "width": 75, "name": "Weight" }, 
        { "index": "NetWeight", "name": "NetWeight"} 
       ], 
       viewrecords: true, 
       loadError: jqGrid_aspnet_loadErrorHandler, 
       pager:jQuery('#Pager1'), 
       width: '640' 
      }); 

が、応答でparsererrorを発生誰でも私を助けることができますか?ありがとう。

+0

jqgridのバージョンは? jqueryのどのバージョンですか?正確なエラーメッセージは何ですか? – david

+0

jqGrid 4.1.1、jquery 1.5.1。 loadError関数のステータスが 'parsererror' – Simon

+0

jQuery 1.5.1を1.6.2に変更しましたが、正しく動作します。なぜですか? – Simon

答えて

0

サーバーレスポンスのHTTPヘッダーのContent-Typeを正しく設定しないとします。 JSONデータの場合、 "application/json"でなければなりません。RFC4627に対応します。静的ファイルを使用してテキストデータを保持する場合は、ファイル拡張子の名前を ".json"に変更できます。 the demoを見てください。これは、JSONデータをjQuery 1.6.2で問題なく読み取ることができることを示しています。

+0

@Oleg返信ありがとう、私は静的ファイルを使用していません。 Firebugでは、サーバー応答のHTTPヘッダーのContent-Typeが "application/json; charset = utf-8"であることがわかります。非常に混乱。 – Simon

+0

@Simon: "Content-Type"の値 "application/json; charset = utf-8"も正しいです。あなたのテストページがオンラインであれば、これを見てエラーを見つけることができます。どのように[私のデモ](http://ok-soft-gmbh.com/jqGrid/simon.htm)から見ると、問題はJSONデータ自体にはなく、jqGrid設定にはない。これは、HTTPヘッダーのレベル上になければなりません。通常、Content-Typeがデータに対応していない場合、JSONデータはXMLデータとして解析され、解析エラーが発生します。 – Oleg

+0

申し訳ありませんが、@ Oleg、オンラインのテストページはありません。 jQuery 1.6.2と1.4.4ではすべてがうまく動作しますが、1.5.xではこのエラーが発生します。上記のように、応答のヘッダーには問題はありません。私は、1.5.xと他のものの間でajaxの設定やjsonの解析に違いがあると思いますか? – Simon

関連する問題