jquery – jqGrid(删除行) – 如何发送其他POST数据?

前端之家收集整理的这篇文章主要介绍了jquery – jqGrid(删除行) – 如何发送其他POST数据?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有jqGrid删除机制的问题,因为它只以POST数据的形式发送“oper”和“id”参数(id是表的主键).

问题是,我需要根据id和另一个列值删除一行,就是说user_id.如何将此user_id添加到POST数据?

我可以将问题总结如下:

>如何获取所选行的单元格值(user_id)?
> AND,如何将该user_id添加到POST数据中,以便可以从发生实际删除过程的代码中检索.

样品代码

  1. jQuery("#tags").jqGrid({
  2. url: "subgrid.process.PHP,editurl: "subgrid.process.PHP?,datatype: "json",mtype: "POST",colNames:['id','user_id','status_type_id'],colModel:[{name:'id',index:'id',width:100,editable:true},{name:'user_id',index:'user_id',width:200,{name:'status_type_id',index:'status_type_id',width:200}
  3. ],pager: '#pagernav2',rowNum:10,rowList:[10,20,30,40,50,100],sortname: 'id',sortorder: "asc",caption: "Test",height: 200
  4. });
  5. jQuery("#tags").jqGrid('navGrid','#pagernav2',{add:true,edit:false,del:true,search:false},{},{mtype:"POST",closeAfterAdd:true,reloadAfterSubmit:true},// add options
  6. {mtype:"POST",// del options
  7. {} // search options
  8. );

解决方法

这不成问题.有不同的方法来做你所需要的.最直接的方法是使用serializeDelData函数.删除行的jqGrid代码如下所示
  1. var ajaxOptions = $.extend({
  2. 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){
  3. //...
  4. },error:function(xhr,st,err){
  5. //...
  6. }
  7. },$.jgrid.ajaxOptions,p.ajaxDelOptions);
  8.  
  9. $.ajax(ajaxOptions);

所以你可以定义你自己的serializeDelData函数来做所有你需要的:

  1. {mtype:"POST",reloadAfterSubmit:true,serializeDelData: function (postdata) {
  2. var rowdata = jQuery('#tags').getRowData(postdata.id);
  3. // append postdata with any information
  4. return {id: postdata.id,oper: postdata.oper,user_id: rowdata.user_id};
  5. }},// del options

顺便说一句,如果你想产生自己的数据发布到服务器,只需返回一个字符串而不是一个对象.那么数据将由jQuery.ajax发布,没有任何变化.

如果您希望将其他信息放置在发布的数据中,但在URL中,您可以在onclickSubmit中执行此操作.我使用例如服务器端的RESTfull服务,并删除一个项目,我使用DELETE HTTP请求与空的身体.所有参数都放在URL中.相应的代码如下所示:

  1. {mtype:"DELETE",serializeDelData: function (postdata) {
  2. return ""; // the body MUST be empty in DELETE HTTP requests
  3. },onclickSubmit: function(rp_ge,postdata) {
  4. var rowdata = jQuery('#tags').getRowData(postdata.id);
  5. rp_ge.url = 'subgrid.process.PHP/' + encodeURIComponent(postdata.id) +
  6. '?' + jQuery.param ({user_id: rowdata.user_id});
  7. }},// del options

猜你在找的jQuery相关文章