繁体   English   中英

停止Ajax请求并调用新的Ajax

[英]Stop Ajax Request And Call New Ajax

在这段代码中,我从用户那里键入字符并在数据库中进行搜索,但是当用户输入每个字符时,使用先前的ajax运行新的ajax请求,

我想在调用搜索功能时,取消先前的ajax请求并运行新的ajax请求;

html代码:

<input type="text" onkeyup="search()">

js代码:

    function search () {


    var request=$.ajax({
        type: "POST",
        url: "php/h.php",
        data: {k_word:k_word},
        dataType: "json",
        success: function (data) {    

          ghtml(data)       

      }
  })


 }

我也尝试了abrot()这样的:

var request;

 function search () {

    request.abort();


     request=$.ajax({
        type: "POST",
        url: "php/h.php",
        data: {k_word:k_word},
        dataType: "json",
        success: function (data) {    

          ghtml(data)       

      }
  })


 }

但不起作用

通常这不是完成操作的方式,而是仅在用户在给定时间内停止键入时才使用节流功能来调用ajax函数

首先,摆脱内联javascript

 <input type="text" id="myInput" />

然后使用事件处理程序

$('#myInput').on('keyup', function() {

    clearTimeout( $(this).data('timer') );

    $(this).data('timer', 
        setTimeout(function() {
            $.ajax({
                type     : "POST",
                url      : "php/h.php",
                data     : {k_word:k_word},
                dataType : "json",
                success  : function (data) {    

                    ghtml(data)       

                }
            });
        }, 500)
    );
});

这将设置ajax调用的超时,并且如果在半秒钟内按下新键,则超时将被清除,因此仅当用户停止键入超过500毫秒时才进行ajax调用

暂无
暂无

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

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