微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-jQuery ajax beforeSend干扰.done()

一个网站中,我有几个由事件(主要是点击)加载的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] 举报,一经查实,本站将立刻删除。

相关推荐