jqGridは、サーバーと通信するためにjQuery.ajaxを使用します。 JSON形式でデータを送信するには、次の2つを実行する必要があります。
- データをJSON形式でエンコードする必要があります。エンコードには通常
JSON.stringify
が使用されます。
contentType
オプションを"application/json"
または"application/json; charset=utf-8"
値に設定する必要があります。リクエストにHTTPヘッダContentType
が含まれています。ヘッダーは、サーバーに送信されたデータがJSON形式でエンコードされていることをサーバーに通知します。
オプションで、dataType: "json"
オプションも使用できます。 Ajax呼び出しの応答にもJSONエンコードされたデータが含まれている必要がある場合は、このオプションを使用します。
jqGridの内部で上記の要件の実装について説明します。 jqGridは、多くの場所でjQuery.ajaxを使用できます。 jqGridのレトロ・バージョン4.4.4を使用します。それははるかに少ない可能性があり、非常に古いWebブラウザや古いjQueryなどの時代に開発されました。 jqGrid 4.4.4の公開日に、Chrome 24、Firefox 18、Internet Explorer 10、Safary 6.0.2を使用したことを思い出します。 IE8(とInternet Explorerはまったく)は、デスクトップ上で最も一般的なWebブラウザー(Windowsのみ)でした。 Chrome 54、Firefox 50、Microsoft Edge 38、Internet Explorer 11、Safari 10で動作します。jqGrid 4.4.4が現代のWebブラウザでうまく動作すると本当に信じていますか?現在のバージョン(4.13.5)のfree jqGridに更新することを強くお勧めします。
あなたはまだ、あなたが
{
label: "Edit Actions",
name: "actions",
width: 100,
formatter: "actions",
formatoptions: {
keys: true,
delOptions: {
serializeDelData: function (postData) {
return JSON.stringify(postData);
},
ajaxDelOptions: {
contentType: "application/json"
}
}
}
}
いずれかを使用する必要がありjqGrid 4.4.4を使用する必要がある場合は、使用その他の方法で、多くの異なるplasesのdepentにdelGridRow
のオプションを設定する必要があります。問題は:delGridRow
メソッドを直接的に使用するのではなく、間接的に使用することです。たとえば、formatter: "actions"
、navGrid
、inlineNav
は、インライン編集またはフォーム編集オプションを使用します。対応する深く配置されたオプションを使用して、カスタムオプションdelGridRow
を指定する必要があります。無料のjqGridには、jqGridオプションがあり、メソッドのすべての間接呼び出しに共通のオプションを指定できます。 inlineEditing
,formEditing
,formDeleting
,formViewing
,searching
を使用して、すべての方法で使用されるデフォルトのオプションを指定することができます。したがって、あなたはちょうどformatter: "actions"
のformatoptions
プロパティを削除することができます。その後
inlineEditing: {
keys: true
},
formDeleting: {
serializeDelData: function (postData) {
return JSON.stringify(postData);
},
ajaxDelOptions: {
contentType: "application/json"
}
}
jqGridオプションを使用することができます。navGrid
を使用すると、削除時にも同じオプションが使用されます。
オプションを指定する新しい方法については、the wiki articleで詳しく読むことができます。
ところで、インライン編集には問題があります。おそらくajaxRowOptions
オプションとserializeRowData
コールバックのjqGridを使用して、インライン編集中にJSONエンコードを行う必要があります。無料のjqGridは同じオプションをサポートしており、とserializeSaveData
をinlineEditing
の中に追加して使用することができます。
ご使用のjqGridのバージョン、およびフリーのjqGrid(https://github.com/free-jqgrid/jqGrid)、商用のGuriddo jqGrid JS](http://guriddo.net/?page_id=103334)またはバージョン<= 4.7の古いjqGrid)。 – Oleg
@Oleg im古いjqgridバージョン4.4.4を使用しています。その無料版(Trirand jqGrid) – user2838738