jqGrid的afterSubmit(jqGrid afterSubmit)

2019-08-02 05:19发布

我叫回来一个insertStatus JSON价值,我想从功能aftersubmit至极我有,因为它遵循得到它:

var addOptions = 

      { 
          closeOnEscape: true,
          width:500,
          url: 'addMember', 
          savekey: [true, 13],
          afterSubmit : function(response, postdata) 
          { 
              alert(response.insertStatus);
          },
          resize : false,
          closeAfterAdd: true
      };

但我会只显示消息“未定义”。

我试图让InsertStatus的值作为JSON,因为该值将告诉我,如果新记录的插入已成功保存到数据库或没有。 也许我应该遵循另一种形式给出,如果我不能从这里得到的JSON值?

我之前的另一个任务,而不是返回JSON值I返回HTTP错误状态与自定义错误消息使用ERRORTEXT。 至极将是最好的形式给出? 即使第二形式给出了更好,我真的很想知道第一个答案。 谢谢你的帮助。

Answer 1:

jqGrid的形式编辑模块采用了complete的回调jQuery.ajax ,而不是典型的success回调(见源代码 )。 这样的第一参数afterSubmit回调(所述response参数)是将文档的jqGrid在被命名为对象jqXHR 。 它的扩展名XMLHttpRequest 。 所以,你应该使用responseText属性来访问来自服务器的响应平原。 如果服务器返回对象insertStatus编码为JSON字符串,那么你不得不解析JSON字符串response.responseText第一,然后才得到insertStatus财产。 的相应的代码afterSubmit可为约以下内容:

afterSubmit: function (response, postdata) {
    var res = $.parseJSON(response.responseText);
    if (res && res.insertStatus) {
        alert(res.insertStatus);
    }
    // you should don't forget to return
    //     return [true, ""];
    // in case of successful editing and return
    //     return [true, "", newId];
    // with the Id of new row generated from the server
    // if you would use reloadAfterSubmit: false
    // option of editGridRow
}


文章来源: jqGrid afterSubmit