javascript - <a>onclick后,等待功能完成后再再次点击/处理

标签 javascript html jquery ajax

我正在使用jQuery.get执行 AJAX 请求。当用户点击 <a> ,我通过 jQuery.get 向服务器发送请求,然后更新<div id='aaa'>ajax call back here</a> ;

但是,当用户单击<a>时非常快,返回数据比点击慢,<div id ='aaa'></a>与数据库中存储的内容不匹配。

例如<div id='aaa'>10</div> , 当用户点击1次时-1。用户点击5次,#aaa应该是 <div id='aaa'>5</div> ,但由于用户点击速度非常快,div 显示 <div id='aaa'>8</div> 。服务器数据库已更新至5当用户再单击 1 次时,<div id='aaa'>8</div>将变成 <div id='aaa'>4</a>因为服务器端是5 .

我知道这是关于 AJAX 网络请求将花费一些有限的时间。

那么,我的函数是否可以等到 jQuery.get完成并完成,然后只能再次单击/处理。我已经尝试了下面的编码,但仍然存在与上面提到的相同的问题。

var isPending = false

function fastbtn(sid, t) {
  if (isPending)
    return;
  goodget('', 'plugin.php?id=ttt&do=realland&ac=' + sid + '&click=true');
}

function goodget(url, rid) {
  isPending = true;
  jQuery.get(url, function(data, status) {
      ajaxget(rid); //this ajaxget is my program core template language, ajaxget(url,WaitId), return as XML format;
    })
    .done(function() { // <--only fires on success
      //alert('ok2');
    })
    .fail(function() { // <-- only fires on error

    })
    .always(function() { // <-- this always fires
      isPending = false;
    });
}
<a href="javascript:;" onclick="fastbtn('watering')">some div ...</a>

enter image description here

你会看到编号正在跳跃..

最佳答案

我将用 button 替换 a 标签(因为 a 标签的目的是导航),并在点击时保持禁用状态,除非服务器发送响应。

<button onclick="fastbtn('watering')">some div ...</button>

收到响应后,即无论成功还是失败,再次启用该按钮。

var isPending = false

function fastbtn(sid, t) {
  if (isPending)
    return;
  goodget('', 'plugin.php?id=ttt&do=realland&ac=' + sid + '&click=true');
}

function goodget(url, rid) {
  isPending = true;
  $('button').attr("disabled", true)
  jQuery.get(url, function(data, status) {
      ajaxget(rid); //this ajaxget is my program core template language, ajaxget(url,WaitId), return as XML format;
    })
    .done(function() { // <--only fires on success

    })
    .fail(function() { // <-- only fires on error

    })
    .always(function() { // <-- this always fires
      isPending = false;
     $('button').attr("disabled", false)
    });
}

编辑 在“嘟嘟”两声输入后更新答案。

关于javascript - <a>onclick后,等待功能完成后再再次点击/处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62035383/

相关文章:

javascript - 使用命名空间调用jquery

php - Jquery:从 php 编码和解码 json

javascript - 从外部 js 文件返回样式表

jquery - 在firefox中点击刷新网页样式是乱码?

jquery - 用于取消选择 jquery 中的项目的“x”不会出现

javascript - 使用 JavaScript 覆盖范围 slider 值

javascript - 使用 css 在 gmail 中更改为自定义光标

javascript - 带有悬停的 img 上的 Html/CSS 过滤器,但 aperes 的文本会干扰悬停功能并让过滤器消失+文本

html - 如何在 Chrome 中禁用页面缩放

jquery - 内联脚本到 jQuery 函数以淡化动态页面上的图像