我正在使用远程数据源,这是一个数据库查询。查询的最大结果是1000.我使用“term”参数来过滤我的结果,但响应很慢。它实际上对2个字符来说并不算太糟糕,但是如果你输入一个字母,它几乎要花3秒才能返回。我从YUI切换到jquery。使用相同的数据源,YUI让我的工作速度更快。响应是1个字符的即时响应。有一个更好的方法吗?代码如下。
$(function() {
$("#xContact").autocomplete({
minLength: 1,
source: "<$strLower(HttpWebRoot)$>data/employee_lookup.php",
focus: function( event, ui ) {
$( "#xContact" ).val( ui.item.label );
return false;
},
select: function( event, ui ) {
$( "#xContact" ).val( ui.item.label );
return false;
}
})
.data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item.label + "<br><span style='font-size:0.8em'>" + item.desc + "</span></a>" )
.appendTo( ul );
};
});
答案 0 :(得分:1)
我认为这是处理远程数据源的库的问题
我的推理:我使用本地数据源使用完全相同的代码,包含更多数据,并立即在1个字符上呈现。我知道这不是我的远程数据源。如果我直接浏览执行查询的服务器端页面,它会立即呈现结果。其中一个建议是它很慢,因为它为每个结果操纵DOM。嗯,它对本地来源做同样的事情。所以,我不是在买那个解释。唯一的区别是来源。因此,必须延迟处理远程数据源。有人建议将远程数据源结果放入字符串中,然后将其用作源。我不应该这样做。如果这有效,它将证明jquery不会处理远程数据源。假设我的远程数据源没有导致滞后(事实并非如此),本地和远程之间应该没有区别。它最终是一系列数据。所以问题必须是处理和/或渲染远程数据源
我正在使用具有相同远程数据源的YUI,并且它立即在1个字符上呈现列表。所以,这证明它也不是数据源。我切换到jquery因为我发现整体更好。我将查询限制为250条记录。它不是即时的,而是在大约1秒后渲染。