Javascript Web服务器已关闭-jqGrid的行为就像没有任何错误一样
我使用jqGrid 4.5.4进行数据编辑:记录在对话中编辑(即,它不是内联编辑) 在编辑选项中,我有Javascript Web服务器已关闭-jqGrid的行为就像没有任何错误一样,javascript,jquery,ajax,jqgrid,Javascript,Jquery,Ajax,Jqgrid,我使用jqGrid 4.5.4进行数据编辑:记录在对话中编辑(即,它不是内联编辑) 在编辑选项中,我有reloadeaftersubmit:false和closeAfterEdit:true。当用户试图修改记录时,服务器上发生错误,对话框将保持打开状态,并向用户显示错误消息(这是正确的行为) 但是,当web服务器关闭时(即打开页面,然后关闭web服务器),网格的行为就好像根本没有问题一样:对话框关闭,新值出现在网格中。这是一个非常令人困惑的行为:用户可能认为他/她更新了数据库中的数据。我在添加和
reloadeaftersubmit:false
和closeAfterEdit:true
。当用户试图修改记录时,服务器上发生错误,对话框将保持打开状态,并向用户显示错误消息(这是正确的行为)
但是,当web服务器关闭时(即打开页面,然后关闭web服务器),网格的行为就好像根本没有问题一样:对话框关闭,新值出现在网格中。这是一个非常令人困惑的行为:用户可能认为他/她更新了数据库中的数据。我在添加和删除记录时也遇到同样的问题。有没有办法解决这个问题?当web服务器关闭时,所有HTTP响应都会在Firebug中处于
中止
状态。在JavaScript代码中,它们可以通过0
HTTP状态代码识别
解决问题中描述的问题的一种方法是在jQuery的全局ajaxError
事件处理程序中捕获所有Aborted
响应,并显示错误页面。我使用与以下类似的代码:
var documentisunload=false;
$(文档).ready(函数(){
$(文档).ajaxError(ajaxErrorHandler);
//“中止”响应也可能在用户离开时发生
//在AJAX请求完成之前返回页面。我们需要避免这些情况。
$(窗口).bind('beforeunload',function(){
//用户离开了页面;不需要显示错误页面
documentisunload=true;
});
});
函数ajaxErrorHandler(事件、jqxhr、设置、异常){
如果(文档已卸载){
return;//用户离开了页面;不需要显示错误页面
}
if(jqxhr.status==0){
//在这里显示错误页面!
}
}
解决此问题的另一种方法是使用jqGrid的afterSubmit
回调:
submitcallback(响应、postdata)后的函数{
如果(response.status==0){
return[false,“无法连接到服务器”,0];
}
否则{
返回[true,”,0];
}
}
此回调应在jqGrid中的添加、编辑和删除选项中注册(afterSubmit:afterSubmitCallback
)。jqGrid将在添加/编辑/删除对话框中显示错误消息