gpt4 book ai didi

php - jQuery ajax beforeSend 干扰 .done()

转载 作者:可可西里 更新时间:2023-11-01 00:59:18 24 4
gpt4 key购买 nike

在一个网站中,我有几个由事件加载的 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(),因为 Hi there, I'm done! 显示.

所以看起来 beforeSend 似乎没有达到完成状态或类似导致它“卡住”的状态,因为 targetElement 中的内容没有用 ajax 调用的响应更新。

我不确定如何解决这个问题。有什么建议吗?

更新,抱歉打错了,我只是在这里输入了示例代码...

最佳答案

  1. 首先,您需要修复代码中的所有语法错误。删除语句中间的 ;

    $.ajax({
    beforeSend: showLoading(target);
    // ^ SYNTAX ERROR
    })
  2. 当您编写 showLoading(target) 时,您会立即调用 showLoading() 函数。

    如果您需要将其设置为带参数的回调,则需要传递一个返回回调的函数。

    beforeSend: function() {
    showLoading(target);
    }

关于php - jQuery ajax beforeSend 干扰 .done(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32025260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com