jqGrid afterSubmit

时间:2012-11-02 07:39:27

标签: jquery json validation http jqgrid

我正在返回一个名为 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值,也许我应该遵循另一个方法?

我之前使用errorText进行另一项任务,而不是返回JSON值,而是返回了一个带有自定义错误消息的HTTP错误状态。这将是最好的方法吗?即使第二个方法更好,我也很想知道第一个问题的答案。谢谢你的帮助。

1 个答案:

答案 0 :(得分:6)

jqGrid的表单编辑模块使用complete回调jQuery.ajax而不是典型的success回调(请参阅the source code)。因此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
}