HTML部分:
<form method="post" id="src-form" name="src-form" action="<?php echo $SCRIPT_NAME; ?>">
<input id="src-location" name="src-location" autocomplete="off" />
<input type="submit" name="src_submit" id="src_submit" value="Search" />
</form>
<script>
$(document).ready(function() {
$("input#src-location").autocomplete({
source: "autosuggest-server.php"
});
$('input#src-location').focus(function()
{
$(this).val('');
});
});
</script>
PHP部分:
<?php
include("db.php");
$return_arr = array();
$fetch = mysql_query("SELECT * FROM city INNER JOIN country ON country.countryid = city.countryid where cityname like '%" . mysql_real_escape_string($_GET['term']) . "%' ORDER BY cityname ASC limit 0,20");
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
$row_array['id'] = $row['id'];
$row_array['value'] = $row['cityname'].", ".$row['countryname'];
array_push($return_arr,$row_array);
}
echo json_encode($return_arr);
?>
JS: 普通jquery autosuggest脚本
在PHP文件中,我添加了
$row_array['value'] = $row['cityname'].", ".$row['countryname_'.$lang].",".$row['cityid'];
当我输入内容时,它会像预期的那样回复出来。有没有办法将cityid与实际显示值分开并将其输入隐藏的输入文本字段?
我想要做的是按照cityid进行搜索,但我不希望它在搜索字段中显示。
还有其他解决方案吗?
非常感谢。
答案 0 :(得分:2)
我建议你将响应作为JSON对象返回,所以在php中你做:
$dataArray = ... //get city data where key=cityId, value=1, key=cityName, value=London etc.
echo json_encode($dataArray);
这将返回类似:
{'cityId':'1','cityName':'London'}
现在在javascript中,通过添加:
来定义你的ajax请求以接受jsondataType: 'json'
一旦收到回复消息,您就可以:
$('#myHiddenField').val(msg.cityId);
var cityName = msg.cityName;
//do whatever you like with cityName