我正在尝试使用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将其传递给输入字段之前由jQuery进行处理。当我查看这类页面的源代码时,有大量的文本(很明显),页面本身在5-10秒之间加载.
所以我想知道有什么办法来加速我的剧本吗?我知道,无论是在同一个文件中还是在其他包含的文件中,总是会有这么多的文本需要处理,但我只是想知道,我是因为这么多数据而被10秒钟的加载页面困住了,还是可以让它变得更棒呢?:)
谢谢你的帮助!
发布于 2011-04-08 09:39:14
看起来您使用了以下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对象,它的工作速度应该要快得多。
发布于 2011-04-08 09:34:35
您肯定应该使用远程自动完成机制,而不是每次都将所有数据填充到文档中。
第一个参数可以是远程数据的URL,也可以是本地数据的数组。 对于远程数据:当用户开始键入时,请求将发送到指定的后端("my_autocomplete_backend.php"),其中包含输入框的当前值的名为Q的GET参数,以及一个参数“极限”,其中指定的值为max选项。
如果查找仍然需要很长时间,那么您可能需要考虑优化PHP脚本,而不是jQuery部件。比如数据库是否使用索引等等.
https://stackoverflow.com/questions/5593167
复制相似问题