我需要改進自動完成腳本的性能。我需要的是,當我點擊輸入框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