使用 jQuery (AJAX) 过滤项目 - 请求以错误的顺序完成


Filtering items with jQuery (AJAX) - requests finish in wrong order

我正在为学校做一个项目,它是关于jQuery,PHP,symfony和所有网络的东西:)。这实际上是我第一次使用jQuery,即使我已经学到了一些东西,仍然有很多我不知道如何解决的问题。

在这个项目中,我应该做的一件事基本上是过滤一些结果。我有一个数据库,当加载网站时,数据库中的所有项目都显示在表格中。然后在表格上方,有一个文本字段。当我输入它时,表中的项目会在我键入时进行过滤。但有时,当我写例如"HP"时,jQuery 首先完成对"HP"的请求并显示结果,然后它完成了对"H"的请求,因此它会覆盖"HP"的结果,这不应该发生。如果我使请求同步,它会阻止我在处理请求时在文本字段中写入。如何使请求按调用顺序完成?

项目这部分的jQuery代码如下所示:

var oldTerm;
function filter() {
var term = $('#term').val();
    //alert(term);
if(term != oldTerm) {
    $.ajax({
        url: url.replace('--', term).replace(/'/$/, '')
                    //musi bejt synchronni
    }).done(function(data) {
        $('#items_table tbody').html(data);
                    alert(term);
        // udalost se musi registrovat po nacteni radku!
        $('.edit_button').click(createForm);
    });
    oldTerm = term;
}
}
$(document).ready(function() {
oldTerm = null;
$('#term').keyup(filter);
});

我认为你最好的拍摄是为 ajax 调用排队,也许也可以使用锁。您还可以使用这个: 对 AJAX 调用进行排队