Это не проблема. Есть разные способы сделать то, что вам нужно. Самый прямой способ - использование функции serializeDelData
. Код jqGrid, который удаляет строки, выглядит следующим образом
var ajaxOptions = $.extend({
url: rp_ge.url ? rp_ge.url : $($t).jqGrid('getGridParam','editurl'),
type: p.mtype,
data: $.isFunction(p.serializeDelData) ? p.serializeDelData(postd) : postd,
complete:function(data,Status){
//...
},
error:function(xhr,st,err){
//...
}
}, $.jgrid.ajaxOptions, p.ajaxDelOptions);
$.ajax(ajaxOptions);
Таким образом, вы можете просто определить свою собственную функцию serializeDelData
, которая делает все, что вам нужно:
{mtype:"POST", reloadAfterSubmit:true, serializeDelData: function (postdata) {
var rowdata = jQuery('#tags').getRowData(postdata.id);
// append postdata with any information
return {id: postdata.id, oper: postdata.oper, user_id: rowdata.user_id};
}}, // del options
Кстати, если вы хотите сами создать данные, отправленные на сервер, просто верните строку вместо объекта. Затем данные будут опубликованы jQuery.ajax без каких-либо изменений.
Если вы предпочитаете размещать дополнительную информацию не в данных, которые публикуются, а в URL, вы можете сделать это внутри onclickSubmit
. Я использую, например, службу RESTfull на стороне сервера, и для удаления элемента я использую DELETE HTTP-запрос с пустым телом. Все параметры размещены в URL. Соответствующий код выглядит следующим образом:
{mtype:"DELETE", reloadAfterSubmit:true, serializeDelData: function (postdata) {
return ""; // the body MUST be empty in DELETE HTTP requests
}, onclickSubmit: function(rp_ge,postdata) {
var rowdata = jQuery('#tags').getRowData(postdata.id);
rp_ge.url = 'subgrid.process.php/' + encodeURIComponent(postdata.id) +
'?' + jQuery.param ({user_id: rowdata.user_id});
}}, // del options