3

我正在返回一个名为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 错误状态。哪个是最好的方法?即使第二种方法更好,我也很想知道第一种方法的答案。谢谢你的帮助。

4

1 回答 1

6

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
}
于 2012-11-02T08:40:25.130 回答