jqGrid使用jQuery.ajax與服務器通信。要以JSON格式發送數據,必須做兩件事:
- 應該以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)是桌面上最流行的網絡瀏覽器(僅限Windows)。現在可以使用Chrome 54,Firefox 50,Microsoft Edge 38和Internet Explorer 11,Safari 10.您是否真的相信jqGrid 4.4.4能夠與現代Web瀏覽器一起使用?我強烈建議您更新至free jqGrid的當前版本(4.13.5)。
如果你還是要用的jqGrid 4.4.4,那麼你應該使用
{
label: "Edit Actions",
name: "actions",
width: 100,
formatter: "actions",
formatoptions: {
keys: true,
delOptions: {
serializeDelData: function (postData) {
return JSON.stringify(postData);
},
ajaxDelOptions: {
contentType: "application/json"
}
}
}
}
一個必須設置的delGridRow
選項在許多不同的plases depent上使用其他方法。問題是:人們不僅直接使用delGridRow
方法,而且間接使用方法。例如,formatter: "actions"
,navGrid
,inlineNav
使用內聯編輯或表單編輯選項。您必須使用相應的深層選項來指定您的自定義選項delGridRow
。免費jqGrid有jqGrid選項,它允許爲方法的所有間接調用指定通用選項。可以使用inlineEditing
,formEditing
,formDeleting
,formViewing
,searching
來指定所有方法使用的默認選項。因此,你可以使用的jqGrid選項
inlineEditing: {
keys: true
},
formDeleting: {
serializeDelData: function (postData) {
return JSON.stringify(postData);
},
ajaxDelOptions: {
contentType: "application/json"
}
}
之後,你可以只是刪除的formatter: "actions"
formatoptions
財產。如果您使用navGrid
,那麼它在刪除時也會使用相同的選項。
你可以閱讀更多關於在the wiki article中指定選項的新方法。
順便說一句,你可能有內聯編輯的問題。您應該使用ajaxRowOptions
選項和serializeRowData
回調jqGrid在內聯編輯期間進行JSON編碼。免費的jqGrid支持相同的選項,並允許您在inlineEditing
內另外使用ajaxSaveOptions
和serializeSaveData
。
請在*所有*您的問題中包含有關您使用的jqGrid版本和叉子([free jqGrid](https://github.com/free-jqgrid/jqGrid),商業版本[Guriddo jqGrid JS](http://guriddo.net/?page_id=103334)或版本<= 4.7的舊jqGrid)。 – Oleg
@Oleg即時通訊使用舊的jqgrid版本4.4.4。它的免費版本(Trirand jqGrid) – user2838738