如何在页面重新加载时禁用jqgrid loadError上的模态错误消息

时间:2013-05-05 12:07:14

标签: ajax jquery jqgrid

使用远程json数据填充JqGrid 4.4.5。 jqGrid loadError方法定义为

loadError: function LoadErrorHandler(jqXHR, textStatus, errorThrown) {
  alert('Load error ' + JSON.stringify(jqXHR) + '\n status ' + textStatus +
                  '\n error ' + errorThrown);
  }

如果快速按下页面中的浏览器刷新按钮或按住方法中定义的Chrome模式警报框中的F5键,则

如何在Chrome中禁用此提醒框? 是否可以确定该页面处于重载状态而不显示此框或其他想法?

在FireFox警告框中仅闪烁,在IE 10中不会发生。看起来这只是Chrome中的问题。

在这种情况下传递参数值:

jqXHR: {"readyState":0,"responseText":"","status":0,"statusText":"error"} 
textStatus:  error 

1 个答案:

答案 0 :(得分:0)

很难写出关于案件的建议,这些建议无法清晰再现。

可能你使用虚拟滚动并且仅在案例中存在一些效果?如果是这样,您可以尝试重复相同的测试而不使用scroll: 1scroll: true

另一个原因可能是某些网络浏览器调用abort的{​​{1}}方法。我建议你用不同版本的jQuery测试代码。大多数人有jqXHRtextStatus === "abort"(请参阅the answer),但可能是不同版本的jQuery存在差异。我建议你在errorThrown === "abort"内设置断点,并检查是谁调用它以及jQuery是否真的中止了。

loadError可能有其他原因。对应于XMLHttpRequest规范,此类错误将发生在网络错误上。在旧版本的jQuery(参见my old answer)中,存在一个错误,网络错误被解释为“成功”。更高版本的jQuery修复了错误,并且在网络错误的情况下将调用回调jqXHR.status === 0(以及error)。在分析了您所拥有的不同案例后,您可以考虑修改您使用的loadError的实现。例如,您应该包含其他条件,例如

loadError

甚至可以针对案例loadError: function (jqXHR, textStatus, errorThrown) { if (textStatus !== "abort" && errorThrown !== "abort") { // display alert } } jqXHR.status === 0进行额外测试(另请参阅here)。无论如何,我建议你在一个特定版本的jQuery中仔细测试这个案例。