Jquery jqgrid addRow saveRow发送前

Jquery jqgrid addRow saveRow发送前,jquery,ajax,jqgrid,jqgrid-inlinenav,Jquery,Ajax,Jqgrid,Jqgrid Inlinenav,我有一个jqGrid,我正在添加一个新行,用户可以编辑它。他们有一个按钮来保存新行。我需要在发送之前访问ajax,以便在调用中添加一些安全性。这在网格的其他几个场景中都是有效的,但是,这一个没有。不知道发生了什么事 下面是我添加新行的方式: jQuery("#myTable").jqGrid('addRow',{ rowID : "new_row", initdata : {}, position :"first", useDefValues

我有一个jqGrid,我正在添加一个新行,用户可以编辑它。他们有一个按钮来保存新行。我需要在发送之前访问ajax,以便在调用中添加一些安全性。这在网格的其他几个场景中都是有效的,但是,这一个没有。不知道发生了什么事

下面是我添加新行的方式:

  jQuery("#myTable").jqGrid('addRow',{
      rowID : "new_row",
      initdata : {},
      position :"first",
      useDefValues : false,
      useFormatter : false,
      addRowParams : {extraparam:{}});
下面是我的“保存”按钮执行的代码:

      jQuery("#myTable").jqGrid('saveRow',"new_row", {
          "url": "{{path('recording_create')}}",
          "mtype": "POST",
          "succesfunc": function(response) {
              return true; 
          }
      });
我试过这个,但它没有开火。我以为在保存行时会调用:

$.extend($.jgrid.defaults,                 
                {
                ajaxRowOptions: { 
                    beforeSend: function () {
                        alert('Before Row Send'); // not called
                     }
                    },
                }
            );
我也尝试过这个,但是,我认为这只是在表单编辑中调用的

            $.extend($.jgrid.edit, {
                ajaxEditOptions: {
                    beforeSend: function (jqXHR, settings) {
                        alert('Before Row Send');  // not called
}}});
有什么想法吗

谢谢, 斯科特

您可以尝试使用

$.extend($.jgrid.inlineEdit, {
    ajaxRowOptions: {
        beforeSend: function (jqXHR, settings) {
            alert('Before Row Send');
        }
    }
});
我希望它能起作用

已更新:抱歉,请输入正确的代码

$.extend($.jgrid.defaults, {
    ajaxRowOptions: {
        beforeSend: function () {
            alert('Before Row Send');
        }
    }
});
你的问题已经包含在文本中了。它应该会起作用。只有在创建网格之前验证代码是否会被执行才很重要。

Oleg, 谢谢你的主意。但是,这并没有起作用。但是,以下方法确实有效:

    $.ajaxSetup({
        beforeSend: function (jqXHR, settings) {
           alert('Before Row Send');               
      }});
问题是,你如何知道什么可以像上面所说的那样扩展

谢谢,
Scott

@ScottV:I测试代码
$.extend($.jgrid.defaults,{ajaxRowOptions:{beforeSend:function(){alert('Before Row Send');}})做工作。内联编辑代码使用jqGrid的
ajaxRowOptions
参数
$t.p.ajaxRowOptions
。可以通过
$.extend($.jgrid.defaults,{ajaxRowOptions:{…})设置它确定。如果我将其设置为网格参数,比如ajaxRowOptions:{contentType:“application/json”},ajaxRowOptions:{contentType:“application/json”,beforeSend:function(){debugger;alert('Before Row Send');},它起作用了。但是,如果我像你说的那样尝试扩展,它就不起作用了。无论哪种方式,解决方案都是使用ajaxRowOptions@ScottV:可能是在调用
$.extend($.jgrid.defaults,…)之前创建了网格?我不明白为什么应该忽略
$.jgrid.defaults
的设置。@ScottV:好的!然后一切都会清楚的。我的回答中包含了“更新”部分,仅供其他读者阅读。