在一个网站中,我有几个由事件(主要是点击)加载的ajax部分.为了告知访问者,显示了部分加载.在大多数情况下,这很有效,但是有时ajax调用接收响应的速度如此之快,以至于干扰了beforeSend.
我的典型结构如下所示:
$(document).on('click', '.handler', function() {
var target = $(this).attr('data-targetElement');
$.ajax({
url: '/ajax.PHP?someParameter=hasValue',
beforeSend: showLoading(target)
})
.done(function(response) {
console.log('Hi there, I\'m done!');
$('#' + target).html(response);
});
});
// This is in a function because it's used by all ajax-calls
function showLoading(target) {
$('#' + target).html('My loading message');
}
问题是,当我检查控制台消息时,即使到达了.done()也仍然显示加载消息,因为您好,我完成了!显示.
因此,它看起来beforeSend似乎尚未达到完成状态或类似的状态,导致其“冻结”,因为targetElement中的内容并未随ajax调用的响应而更新.
我不确定该如何解决.有什么建议么?
解决方法:
>首先,您需要修复代码中的所有语法错误.
去掉 ;在声明的中间.
$.ajax({
beforeSend: showLoading(target);
// ^ Syntax ERROR
})
>编写showLoading(target)时,您立即调用showLoading()函数.
如果需要将其设置为带有参数的回调,则需要传递一个函数,该函数将返回您的回调.
beforeSend: function() {
showLoading(target);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。