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