简体   繁体   English

停止先前的ajax呼叫

[英]Stop previous unobtrusive ajax call

I have a form like : 我有一个像这样的表格:

@using (Ajax.BeginForm("List", null, new AjaxOptions() { UpdateTargetId = "results" }, new { id = "myform" }))
{
     <input id="search" type="text" value="" />
}

I declare javascript to send submit when user presses a key in my Search box : 我声明javascript,当用户在搜索框中按下键时发送提交:

<script type="text/javascript">
    $("#search").on("keyup", function ()
    {
        $("#myform").submit();
    });
</script>

But when users search quickly, browser start multiple ajax request, and wait the end of each call one by one. 但是当用户快速搜索时,浏览器会启动多个ajax请求,并逐个等待每个调用的结束。 How to stop the previous ajax call before sending another without removing ajax unobtrusive ? 如何在发送另一个前不停止ajax的情况下停止上一个ajax调用?

I would suggest instead of directly calling $("#myform").submit(); 我建议不要直接调用$("#myform").submit(); Break it down to an $.ajax() request & abort if before making another one 将其分解为$ .ajax()请求,并在做出另一个请求之前中止

$("#search").on("keyup", function (){
    var xhr;

  if (xhr){ 
           xhr.abort();  //stop previous ajax          
    }

     xhr = $.ajax({
               type: "GET",
                url: "@Url.Action(list)",
              data : {formdata : $("#myform").serialize() },
            success: function(response){
                  // do some stuffs with $("#results")
             }
      });                  

});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM