2012-03-27 13 views
1

JSONデータをjqGridに表示する際に問題が発生しています。JSONデータをjqGridにロードしています

私はこのフォーラムで多くを検索し、さまざまな形で試してみました。私はこれが既に答えられている場合はお詫びしますが、私は本当にこの1つで助けが必要です。私は(これはOK働いていた)デフォルトパラメータとデータとjsonreader機能を送信するためにJavaScriptSerializerを使用していたサーバーのページで

私は今、改ページ調整する必要があるとSIDX、 SORD ページパラメータで動作するように私のサーバーページのコードを変更しました。

サーバからの結果の文字列は次のようになります。ここでは

{"total":"344","page":"1","records":"8577","root":[{"Id":"1","SerialNumber":"132","Name":"ServerName"},...]} 

は私のjQueryのコードです:

$("#list").jqGrid({ 
     datatype: "json", 
     mtype: 'GET', 
     url:'https://server/handlerpage.ashx', 
     colNames:['Id','SerialNumber','Name'], 
     colModel :[   
       {name:'Id', index:'Id', jsonmap:"Id", width:20}, 
       {name:'Name', index:'Name', jsonmap:"Name", width:120}, 
       {name:'SerialNumber', index:'SerialNumber', jsonmap:"SerialNumber", width:100}],  
     jsonreader: {repeatitems:false,id:'Id',root:'root'}, 
     pager: '#pager', 
     rowNum:25, 
     rowList:[25,50,75,100], 
     sortname: 'Id', 
     viewrecords:true, 
     gridview: true, 
     height:"400", 
     width:"700", 
     caption: 'Select from existing server', 
     loadtext:'Loading, please wait' 
     }).navGrid("#pager", { edit: false, add: false, search: true, del: false }); 
+1

コードの主なエラーは、 'jsonReader'ではなく' jsonreader'の使用です。すべての 'jsonmap'プロパティと' index'も削除できます。 '' https:// server/handlerpage.ashx ''のように 'url'を使用しないことをお勧めします。 Ajax [同じオリジンポリシー](http://en.wikipedia.org/wiki/Same_origin_policy)に対応すると、現在のページと同じ 'https:// server /'接頭辞を使用する必要があります。したがって、あなたは 'url: 'handlerpage.ashx''または' url:'/handlerpage.ashx''をよく使うべきです。 – Oleg

+0

ありがとうオレグ、私はjsonReader(資本R)をテストし、それは働いた。また、ポリシーを遵守するようにURLを変更しても機能しました。 – fabianmunoz

+0

あなたは大歓迎です!エラーが非常に小さい(1文字​​のみ)場合がありますが、それを見つけるのが難しい場合があります。 – Oleg

答えて

0

サーバー側のスクリプトがHEADERS

との適切なJSON文字列を返していることを確認してください。

demoサイトとJSONの例をさらに確認してください

+0

私はapplication/jsonとtext/jsonの両方を試しましたが、私の問題は解決しませんでした。私もtext/plain(ページネーションの前に初めて動作する)を試しましたが、それはどちらもうまくいきませんでした。面白いことに、面倒なことがうまくいけば、ページの数を見て変更することができます。グリッドのように、サーバーの応答のルート部分を読み取る必要はありません。 – fabianmunoz

+0

私はtext/plain、text/json、application/jsonを使っていましたが、それらはすべてjsronReaderを変更してから働きました。ありがとうございました。 – fabianmunoz

1

は、応答が正しくフォーマットする必要があるクエリからの応答としてJSONデータを使用するためには、以下の

jsonReader: { 
    root: 'rows', 
    page: 'page', 
    total: 'total', 
    records: 'records', 
    repeatitems: true, 
    cell: 'cell', 
    id: 'id', 
    userdata: 'userdata' 
} 
+0

それもうまくいきませんでした。私は 'root':[{...}]が間違っているのか疑問に思っています。私がjsonReaderでルートタグ 'rows'やその他の値を変更したときに、グリッドが読み込み文字列を表示してそこにとどまる。 – fabianmunoz

+0

jsonReader:{ルート: '行'、ページ: 'ページ'、合計: '合計'、レコード: 'レコード'、反復項目:偽、ID: 'ID'}ありがとうございました2種子 – fabianmunoz

3

を試してみてください。正しい応答とは何かを判断することは難しく、文書からそれを取得する方法もありません。サーバー設定で応答の一部として警告が生成され、グリッドが読み込まれなくなるため、さらに問題が発生する可能性があります。

これはデフォルトのjsonリーダーです。つまり、レスポンスを正しくフォーマットすると、何か/カスタムjsonリーダーを追加する必要はありません。

jsonReader : { 
    root: "rows", 
    page: "page", 
    total: "total", 
    records: "records", 
    repeatitems: true, 
    cell: "cell", 
    id: "id", 
    userdata: "userdata", 
    subgrid: { 
    root:"rows", 
    repeatitems: true, 
    cell:"cell" 
    } 

まず、適切な応答形式を使用していることを確認してください。 {"page":1,"total":1,"records":"2","rows":[{"id":"1","cell":["1","mydata1"]},{"id":"2","cell":["2","mydata2"]}]}

サンプルページにはサンプルはありませんが、グリッドに2つの列しかない場合は上記のとおりです。あなたのサーバーのクエリ/サーバーのクエリの解析と、この形式を返すためにサーバー側のスクリプトを実行するページに渡される値を取得する必要があります。ドキュメントのexample.phpページには、必要なすべての値が表示されます。

このコードは、エラーの警告を回避し、上記の応答と一致する適切なヘッダーを提供します。また、ドキュメントでは、連想配列インデックス名のインデックスのあいだにアポストロフィを追加しないことに注意してください。それは失敗するでしょう。ドキュメントに欠けているものを焼き直しする

header('Content-type: application/json');$responce = new stdClass();$responce->page = $page;$responce->total = $total_pages;$responce->records = $count;$i=0;while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {$responce->rows[$i]['id']=$row['ID'];$responce->rows[$i]['cell']=array($row['ID'],$row['entity_name']); $i++; } echo json_encode($responce); 

(私がちょうどそれらを逃している可能性があると、jQgridのための文書は叙事詩であっても/マスターが働く): 1. Aの必要性についての言及jsonのヘッダ・ステートメント(XMLの例ではっきりしています) 2.戻り値の文字列のサンプルはありません 3.連想配列索引の適切な書式がない。 4.レスポンスの一部としてPHP警告が返されるのを避ける方法はありません

関連する問題