我制作了一个CMS,在操作过程中会提取大量数据.
CMS由PHP,MysqL,jQuery,Bootstrap和使用AJAX构成.
问题是如果您丢失了互联网连接可能会导致显示和滚动问题.
我很乐意,如果有一个很好的方法来显示错误并在没有互联网连接时阻止网站上的所有功能.建立连接后,应该是站点上允许的所有功能.
谢谢!
(对不起,我的英语不好.)
解决方法:
如果您使用的是jQuery,则只需挂钩global error handler并在发生错误时锁定应用程序.锁定屏幕可以简单地要求再试一次.
$( document ).ajaxError(function() {
// lock your UI here
});
此外,一旦UI被锁定,您可以执行以Exponential Backoff方式ping服务器的功能,并在网络恢复时自动解锁应用程序.
使用jQuery的blockUI插件可以轻松锁定您的应用程序.
例
(function ($) {
var locked = false;
var errorRetryCount = 0;
var blockUiOptions = { message: "Oops! Could not reach the server!" };
// change this function to adjust the exponential backoff delay
function backoff(n) {
return Math.pow(2, n) * 100;
}
$(function () {
$( document ).ajaxError(function () {
var req = this;
errorRetryCount += 1;
if (!locked) {
locked = true;
$.blockUI(blockUiOptions);
}
// retry to send the request...
setTimeout(function () { $.ajax(req); }, backoff(errorRetryCount));
}).ajaxSuccess(function () {
locked && $.unblockUI();
locked = false;
errorRetryCount = 0;
});
});
})(jQuery);
注意:您可能不希望在网络出现故障时无限期地重试您的请求,并且希望在某个时候退出重试.由于这超出了这个问题的范围,我会保持原样.但是,您可以查看this related question,这可能会帮助您对此部分进行排序.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。