问题:
您需要从 JSON 解析错误响应并将它们显示在 jqGrid 的对话框中。理想情况下,您希望网格检查“STATUS: 'ERROR'”并相应地显示所有错误消息。
答案:
遵循 HTTP 协议指南至关重要服务器和客户端通信时。标准的成功响应包括以下内容:
HTTP/1.1 200 OK ... Content-Type: application/json ... {"page":"1",....}
相反,如果 URL 不存在,服务器响应将以:
HTTP/1.1 404 Not Found
jqGrid 依赖于 HTTP 状态代码以确定如何处理服务器响应。例如,404 状态代码表示网格不会尝试解释 JSON 数据。
演示代码:
演示此概念:
$("#list").jqGrid({ url: 'Unknown.json', // file with this name doesn't exist datatype: 'json', // ... other relevant parameters loadComplete: function () { alert("OK"); }, loadError: function (jqXHR, textStatus, errorThrown) { alert('HTTP status code: ' + jqXHR.status + '\n' + 'textStatus: ' + textStatus + '\n' + 'errorThrown: ' + errorThrown); alert('HTTP message body (jqXHR.responseText): ' + '\n' + jqXHR.responseText); } });
此代码将显示以下警报:
自定义错误处理:
如果您想以不同方式处理错误响应,可以使用 error HTTP 状态代码。下面是 loadError 实现的扩展版本:
loadComplete: function () { // remove error div if it exists $('#' + this.id + '_err').remove(); }, loadError: function (jqXHR, textStatus, errorThrown) { // remove error div if it exists $('#' + this.id + '_err').remove(); // insert div with the error description before the grid $(this).closest('div.ui-jqgrid').before( '<div>
此函数删除任何现有的错误 div,然后在网格之前插入一个新的 div 以显示错误消息。可以自定义decodeErrorMessage函数来处理您喜欢的格式的错误消息。
使用displayErrorMessage:
免费的jqGrid提供了内置的displayErrorMessage方法,用于在网格上方的错误 div。在使用自定义错误处理之前,建议测试默认行为以确保其满足您的需求。
以上是如何处理 jqGrid 中的服务器端错误和表单验证?的详细内容。更多信息请关注PHP中文网其他相关文章!