我有一个包含日期字段的jqGrid编辑表单。我想实现异常处理,以便来自服务器的错误消息将显示在编辑表单中。回复示例:
HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
Date: Fri, 28 Jun 2013 15:47:21 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: close
11
"Bad Date format"
0
jqGrid仅在表单顶部显示“错误状态:'错误请求'错误代码:400”。我怎么能让它也显示错误信息:“错误的日期格式”?
答案 0 :(得分:2)
您应该使用表单编辑的errorTextFormat回调。作为参数,回调得到jqXHR对象,它是XMLHTTPRequest对象的包装器。它的responseText属性表示响应的主体(在您的情况下为11\n"Bad Date format"\n0
)。 status属性为您提供HTTP状态代码(示例中为400
)。您可以使用getResponseHeader和getAllResponseHeaders来检查所有HTTP headers。
顺便说一下,我发现响应包含Content-Type: application/json
非常奇怪,但响应的主体不包含JSON字符串。
答案 1 :(得分:1)
假设您的回复包含2个字段:status(OK,ERROR,..)和消息,那么您应该编写如下函数:
validateAfterSubmit = function(response, postdata){
var json = response.responseText; // response text is returned from server.
var result = JSON.parse(json); // convert json object into javascript object.
return [result.status == 'OK', result.message, null];
};
并在编辑/添加选项中指定:
//edit options
{ url: '...',
afterSubmit: validateAfterSubmit
},
//add options
{ url: '...',
afterSubmit: validateAfterSubmit
},
希望这可以帮助