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

我的服务器很弱


当客户端重复请求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;


MM们
浏览 134回答 1
1回答

慕仙森

如果你想阻止用户发出多个并行请求,你可以设置一个标志,如果请求已经在进行中,该标志将导致功能代码无法执行。例如,看看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。否则,用户必须刷新页面才能再次发出请求。
打开App,查看更多内容
随时随地看视频慕课网APP