停止以前不引人注目的ajax呼叫

时间:2017-10-10 14:19:15

标签: c# jquery asp.net-mvc ajax.beginform unobtrusive-ajax

我的表格如下:

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

当用户在我的搜索框中按下某个键时,我声明javascript发送提交:

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

但是当用户快速搜索时,浏览器会启动多个ajax请求,并逐个等待每个调用的结束。 如何在发送另一个之前停止之前的ajax调用而不删除ajax不显眼?

1 个答案:

答案 0 :(得分:0)

我建议不要直接拨打$("#myform").submit(); 将其分解为$ .ajax()请求&amp;如果在再做一次之前中止

$("#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")
             }
      });                  

});