Ajax PHP - keyup函数Bug(慢速查询)

时间:2018-02-11 15:51:13

标签: php mysql ajax keyup

我构建一个应用程序来使用ajax获取记录数据库。我使用keyup函数来捕获我查询/写入的内容。但有时我写的东西就像" si"并且数据库中有很多记录,查询花费的时间比我写下这个bug发生的下一个字母要多。 (查询' sitre'但PHP只捕获' si'): enter image description here

我的问题是,有没有办法解决这个问题? 我的JS代码:

    <script>
$(document).ready(function(){
    load_data();
    function load_data(query) {
        $.ajax({
            url:"fetch.php",
            method:"POST",
            data:{query:query},
            success:function(data)
            {
                $('#result').html(data);
            }
        });
    }
    $('#search_text').keyup(function(){
        var search = $(this).val();
        if(search != '') {
            load_data(search);
        } else {
            load_data();
        }
    });
});
</script>

谢谢。

由于 Taron Saribekyan

而延迟修复
<script>
var timeout = null;
$(document).ready(function(){
    load_data();
    function load_data(query) {
        $.ajax({
            url:"fetch.php",
            method:"POST",
            data:{query:query},
            success:function(data)
            {
                $('#result').html(data);
            }
        });
    }
    $('#search_text').keyup(function(){
        var search = $(this).val();
        clearTimeout(timeout);
        if(search != '') {
            timeout = setTimeout(function () {
            load_data(search);}
            , 500);
        } else {
            load_data();
        }
    });
});
</script>

1 个答案:

答案 0 :(得分:2)

在ajax查询之前设置延迟。 See how to do it