为了账号安全,请及时绑定邮箱和手机立即绑定

如何让 jQuery 等待 Ajax 调用完成后再返回

如何让 jQuery 等待 Ajax 调用完成后再返回

PHP
MM们 2023-07-08 16:31:47
我的服务器很弱当客户端重复请求ajax服务时,服务器停止工作频繁需求ajax我的服务器变弱了我只想提出一个请求。完成后,他将能够提出另一个请求function checkItemd(item_id){$("#checkBtn"+item_id).html("Processing..(Wait)").removeClass("btn-success").addClass("btn-primary");alert("One tool checked at a time - Click OK");var payload_string = $("#payload_form").serialize();$.ajax({    type:"POST",    url:"ajax-item-check",    data:payload_string + "&itemId=" + item_id,    dataType:"json",    success:function(result){        if (result.result=="success"){            if (result.works=="success"){                var checkBtnMessage = result.response ? result.response : "'Sent to ' Email ";                $("#checkBtn"+item_id).html(checkBtnMessage).removeClass("btn-primary").addClass("btn-success");            }else{                $("#checkBtn"+item_id).html("Error").removeClass("btn-primary").addClass("btn-danger");                setTimeout('removeRow('+item_id+');',1000);            }        }else{            $("#checkBtn"+item_id).html("Not available to sellers").removeClass("btn-primary").addClass("btn-warning");        }        }});return false;
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

如果你想阻止用户发出多个并行请求,你可以设置一个标志,如果请求已经在进行中,该标志将导致功能代码无法执行。


例如,看看requestInProgress这个例子中的标志:


var requestInProgress = false;


function checkItemd(item_id) {

  if (requestInProgress == true) return false;


  $("#checkBtn"+item_id).html("Processing..(Wait)").removeClass("btn-success").addClass("btn-primary");

  alert("One tool checked at a time - Click OK");

  var payload_string = $("#payload_form").serialize();

  requestInProgress = true;


  $.ajax({

    type:"POST",

    url:"ajax-item-check",

    data:payload_string + "&itemId=" + item_id,

    dataType:"json",

    success:function(result){

        requestInProgress = false;


        if (result.result=="success") {

            if (result.works=="success") {

                var checkBtnMessage = result.response ? result.response : "'Sent to ' Email ";

                $("#checkBtn"+item_id).html(checkBtnMessage).removeClass("btn-primary").addClass("btn-success");

            }else{

                $("#checkBtn"+item_id).html("Error").removeClass("btn-primary").addClass("btn-danger");

                setTimeout('removeRow('+item_id+');',1000);

            }

        }else{

            $("#checkBtn"+item_id).html("Not available to sellers").removeClass("btn-primary").addClass("btn-warning");

        }

    

    }

  });

}

注意,您可能需要添加一个“错误”回调,以便在请求出现任何意外问题时可以再次将标志设置为 false。否则,用户必须刷新页面才能再次发出请求。


查看完整回答
反对 回复 2023-07-08
  • 1 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信