【发布时间】:2014-04-03 19:56:36
【问题描述】:
我正在为学校做一个项目,它是关于 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" 中的第一个
A代表 asynchronous — 特别不保证顺序。第一件事是......当我们进行过滤或预先输入建议时,我们会对其进行最小字符计数;我们从不对单个角色采取行动……其次,对其设置超时;在自上次击键后经过 X 毫秒之前,不要进行 AJAX 查询/调用。 (只要用户快速输入,就不会进行过滤;当他们暂停时(1/10 秒?)就是我们发出 AJAX 调用的时候。)
标签: javascript php jquery ajax symfony