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