我正在尝试使用jQuery的花哨自动完成功能,但我在执行脚本的速度方面存在问题。代码段:
var data = <?php if(isset($names)) { echo json_encode(implode(" | ", array_unique($names))); } else { echo "null"; } ?>;
if (data != null) {
data = data.split(" | ");
$("#search_names").autocomplete(data);
}
我的数据来自某些MySQL表,在jQuery将其传递给输入字段之前由PHP处理。当我查看这样的页面的来源时,那里(显然)有大量的文本,页面本身在5-10秒之间加载...
所以我想知道有没有办法以某种方式加速我的剧本?据我所知,无论是在同一个文件还是其他包含的文件中,都会有始终这么多文本进行处理,但我只是想知道因为数据太多而无法加载10秒加载页面不知何故让它变得更棒? :)
感谢您的帮助!
答案 0 :(得分:4)
您绝对应该使用remote autocomplete mechanism,而不是每次都将所有数据填入文档中。
第一个参数可以是远程数据的URL或本地数据的数组。
对于远程数据:当用户开始键入时,请求被发送到指定的后端(“my_autocomplete_backend.php”),其中包含名为q的GET参数,该参数包含输入框的当前值和参数“limit”使用为max选项指定的值。
如果查找仍然花费很多时间,您可能需要考虑优化PHP脚本而不是jQuery部分。像使用索引的数据库等......
答案 1 :(得分:2)
看起来您正在使用以下scritp:http://docs.jquery.com/Plugins/autocomplete
你应该使用Ajax来做这种事情,例如:
$("#search_names").autocomplete('/ajax/autocomplete.php');
然后在你的自动完成HTML中你应该做的事情:
<?php
//Database
//Do Query: SELECT item FROM content WHERE {$escaped_q} ORDER BY item_hits DESC LIMIT {$escaped_limit}
//echo json_encode($results);
?>
将结果打印为JSON对象,它应该可以更快地工作。