我需要改进自动完成脚本的性能。我需要的是,当我点击输入框elementID时,它将填充search.php中的选择列表,并由json_encode
返回。以下脚本正在工作。但每次当我点击输入框时,它需要一段时间才能生成列表。关于自动完成性能的建议
("#elementID")
.autocomplete({
source: function(request, response) {
$.ajax({
url: "search.php",
dataType: "json",
success: function(data){
response(data[0]);
}
});
},
minLength: 0,
delay: 0,
select: function(event, ui){
$(this).val(ui.item.value);
},
change: function(event, ui) { //remove if not click from drop down
if (!ui.item) {
$(this).val("");
}
}
})
.click(function() { //Click to activate
$("#elementID").autocomplete("search", " ");
});
在search.php中
$ocidb ->strTable = "table";
$ocidb ->strField = "column1";
$ocidb ->strCondition = "coulmn1 is not null";
$result = $ocidb->ORASelectRecord();
echo json_encode(filter_unique_array($result, 'coulmn1'));
return;
喜欢的了解一下,如果我正确地做事情还是有做它的另一个正确的方法?
您在php脚本上检索了多少条记录?你尝试过使用分页吗?您是否尝试过在客户端和/或服务器端使用缓存? – rkrdo 2013-05-02 01:31:46
如何对自动完成分页?那里有没有好的例子? – user1761160 2013-05-02 01:36:56
可以在服务器端的查询中使用[LIMIT {[offset,] row_count]完成分页。要添加缓存DOM元素,你可以按照这个链接http://jqueryui.com/autocomplete/#remote-with-cache,因为我猜你正在使用jqueryui。 – rkrdo 2013-05-02 14:14:18