【发布时间】:2013-05-02 01:26:17
【问题描述】:
我需要提高自动完成脚本的性能。我需要的是,当我单击输入框 elementID 时,它将填充来自 json_encode 的 search.php 返回的选择列表。以下脚本正在运行。但是每次点击输入框时,都会需要一段时间才能生成列表。
("#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 脚本中检索了多少条记录?您是否尝试过使用分页?您是否尝试过在客户端和/或服务器端使用缓存?
-
如何在自动完成时进行分页?有什么好的例子吗?
-
可以在服务器端的查询中使用 [LIMIT {[offset,] row_count] 来完成分页。要添加缓存 DOM 元素,您可以点击此链接 jqueryui.com/autocomplete/#remote-with-cache,因为我猜您正在使用 jqueryui。
标签: php jquery ajax performance autocomplete