【发布时间】:2012-07-20 17:07:09
【问题描述】:
所以我试图从我的数据库中填充一个自动完成的搜索表单。这是我创建数组的 php 代码
$leaders= mysql_query("SELECT model_name,model_id FROM models
ORDER by model_name DESC");
while($leader=mysql_fetch_array($leaders)){
$model= $leader['model_name'];
$modelid= $leader['model_id'];
$name[] = array('label'=> $model, 'value'=> $modelid);
$count = $count + 1;
}
$fp = fopen('results.php', 'w');
fwrite($fp, json_encode($name));
fclose($fp);
我的问题在于 jquery 自动完成中的某个地方,搜索表单只返回我的 json 中所有产品的巨大列表,而没有在用户键入时进行过滤。我的理想目标是将值分配给 url 的末尾。前任。 "http://www.example.com/" + 值
$(function() {
$("#search").autocomplete({
source: function(request, response) {
$.ajax({
url: "results.php",
dataType: "json",
data: { q: request.term },
success: function(data) {
response($.map(data, function(value,key) {
return { label:value.label , value: value.value }
}));
}
});
},
minLength: 2
});
});
感谢您的帮助
【问题讨论】:
-
有没有实际的过滤代码?您可以在 SQL 查询中添加
LIMIT。 -
您为什么要写入不同的
.php文件?为什么不直接echo json_encode(..? -
当您使用服务器端数据源时,您负责进行过滤。自动完成小部件只是显示结果。
-
有几千种产品,所以我不想减慢页面的加载时间。你能指出我如何让它发挥作用的正确方向吗?
-
MMK 的回答是一个很好的起点,您可以使用
$_POST['term']处理 JQuery 的 Autocomplete 的 Ajax 请求发送的内容。关于您对写到不同的.php文件的回复。什么?!