php - jQuery ajax beforeSend 干扰 .done()

标签 php jquery ajax

在一个网站中,我有几个由事件加载的 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/

相关文章:

php - 如何防止从csv到mysql的重复插入

javascript - jQuery 计算每个项目并将其编号为 02、03、04,但第一个项目文本应为 "Up Next"

python - 开发新网络应用程序的平台

php - 将文件上传到 SFTP 服务器

php - MySQL查询: LIKE %$var% but not when $var empty

javascript - 渲染时显示事件量表内半径中的轨迹值总和

javascript - 连续或无限滚动,接近页面底部时加载更多内容

javascript - Stripes:无法添加到通过 javascript 动态创建的表格中

php - PDO:错误处理

javascript - 如何将 jQuery 数据变量放入按钮而不是 div 中