我有一个页面,其中搜索结果显示在网格和地图上(使用KML生成,覆盖在嵌入的Google地图上)。我已经通过用户输入来连接它,这是我的代码的骨架,它的工作原理:如何设置一个计时器以防止重叠ajax调用?
$(function() {
// Wire up search textbox
$('input.Search').bind("keyup", update);
});
update = function(e) {
// Get text from search box
// Pass to web method and bind to concessions grid
$.ajax({
...
success: function(msg) {
displayResults(msg, filterParams);
},
});
}
displayResults = function(msg, filterParams) {
// Databind results grid using jTemplates
// Show results on map: Pass parameters to KML generator and overlay on map
}
根据搜索,可能会有数百个结果;因此在displayResults
中发生的工作在服务器(查询数据库,即时创建和简化KML)和客户端(数据绑定结果网格,覆盖地图上的大型KML文件)上都是处理器密集型的。
我喜欢在输入时逐渐缩小结果的直接性,但我想尽量减少刷新的次数。在运行update
函数之前,在用户停止键入之后引入N秒延迟的最简单方法是什么?
这很好用 - 谢谢。 – 2008-10-14 18:32:14