使用远程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
答案 0 :(得分:0)
很难写出关于案件的建议,这些建议无法清晰再现。
可能你使用虚拟滚动并且仅在案例中存在一些效果?如果是这样,您可以尝试重复相同的测试而不使用scroll: 1
或scroll: true
。
另一个原因可能是某些网络浏览器调用abort
的{{1}}方法。我建议你用不同版本的jQuery测试代码。大多数人有jqXHR
或textStatus === "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中仔细测试这个案例。