Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Web服务器已关闭-jqGrid的行为就像没有任何错误一样_Javascript_Jquery_Ajax_Jqgrid - Fatal编程技术网

Javascript Web服务器已关闭-jqGrid的行为就像没有任何错误一样

Javascript Web服务器已关闭-jqGrid的行为就像没有任何错误一样,javascript,jquery,ajax,jqgrid,Javascript,Jquery,Ajax,Jqgrid,我使用jqGrid 4.5.4进行数据编辑:记录在对话中编辑(即,它不是内联编辑) 在编辑选项中,我有reloadeaftersubmit:false和closeAfterEdit:true。当用户试图修改记录时,服务器上发生错误,对话框将保持打开状态,并向用户显示错误消息(这是正确的行为) 但是,当web服务器关闭时(即打开页面,然后关闭web服务器),网格的行为就好像根本没有问题一样:对话框关闭,新值出现在网格中。这是一个非常令人困惑的行为:用户可能认为他/她更新了数据库中的数据。我在添加和

我使用jqGrid 4.5.4进行数据编辑:记录在对话中编辑(即,它不是内联编辑)

在编辑选项中,我有
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将在添加/编辑/删除对话框中显示错误消息