我正在逐步增强我网站的ajax-tivity(TM),并且最近添加了一些非常基本的错误处理。 我的调用是通过jquery .ajax()方法进行的,我用show_error_box(消息)函数向用户显示错误 我通过返回脚本处理我的所有ajax,因此服务器端验证很容易 - 我只是发回一个show_error_box的调用。对于其他错误,我只需将以下代码放在我的.ajax调用中
error: function(xhr, status, error) {
show_error_box("There has been an error communicating with the server<br/>The field has not been updated<br/>Please check your internet connection");
}
我发现这很好地解决了大多数问题(没有连接,超时等),但当用户在ajax调用仍在进行时点击链接时,它的处理能力很差。错误框开始显示,然后突然将用户带到新页面。
处理这种情况的更好方法是什么?理想情况下,我会显示一个非侵入式错误消息(例如“请等到更新完成”)并忽略链接上的点击。有关如何最好地实现这一点的任何建议吗?
编辑:
我通过暂时禁用所有链接然后像这样重新启用它来解决这个问题;
$.ajaxSetup({
beforeSend: function() {disable_links()},
complete: function() {enable_links()},
timeout: 15000
});
function disable_links() {
$('a').each(function() {
if ($(this).attr('href')) {
$(this).data('href', $(this).attr('href')).removeAttr('href');
}
})
}
function enable_links() {
$('a').each(function() {
$(this).attr('href', $(this).data('href'));
})
}
答案 0 :(得分:1)
也许你可以使用BlockUI jQuery插件。这将阻止用户在当前AJAX请求返回之前单击链接:
$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);