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

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

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

我可以将问题总结如下:

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

样品代码

jQuery("#tags").jqGrid({
                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}
                ],pager: '#pagernav2',rowNum:10,rowList:[10,20,30,40,50,100],sortname: 'id',sortorder: "asc",caption: "Test",height: 200
        });
        jQuery("#tags").jqGrid('navGrid','#pagernav2',{add:true,edit:false,del:true,search:false},{},{mtype:"POST",closeAfterAdd:true,reloadAfterSubmit:true},// add options
   {mtype:"POST",// del options
            {} // search options
        );

解决方法

这不成问题.有不同的方法来做你所需要的.最直接的方法是使用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",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

猜你在找的jQuery相关文章