这个问题已经困扰我两天了,我已经花了足够的时间来自己解决这个问题。
我目前有两个页面,其中一个页面上有一个表单,其中一个地址字段是通过从另一个PHP页面提供的json_encode获取值自动完成的。我的问题是,我需要从那个页面获取其他信息,但我怎么也想不出如何获得它。
在我的表单页面上的自动完成jQuery是:jQuery(document).ready(function(){
$('#address').autocomplete({source:'suggest_address.php', minLength:3});
});
说明jQuery正在使用jQuery UI Autocomplete 1.8.2进行操作。
创建json:
的建议地址。php页面<?php
if ( !isset($_REQUEST['term']) )
exit;
$dblink = mysql_connect('x', 'y', 'z') or die( mysql_error() );
mysql_select_db('x');
$rs = mysql_query('select address, mapname from abcd where address like "%'. mysql_real_escape_string($_REQUEST['term']) .'%" limit 0,6', $dblink);
$data = array();
if ( $rs && mysql_num_rows($rs) )
{
while( $row = mysql_fetch_array($rs, MYSQL_ASSOC) )
{
$getdate = mysql_query('SELECT city, lpday, lpmonth, lpyear FROM abcd WHERE map="'.$row['mapname'].'"');
$lpday = mysql_result($getdate, 0, "lpday");
$lpmonth = mysql_result($getdate, 0, "lpmonth");
$lpyear = mysql_result($getdate, 0, "lpyear");
$city = mysql_result($getdate, 0, "city");
$zip = substr($row['mapname'], 0,5);
$data[] = array(
'label' => $row['address'].' | '. $row['mapname'] . ' | ' . $lpmonth . '/' . $lpday . '/' . $lpyear ,
'value' => $row['address'],
'city' => $city,
'zip' => $zip
);
}
}
echo json_encode($data);
flush();
我需要得到'城市'和'zip',并使jquery在我的表单页面上自动插入这些值的城市和zip字段的形式。它目前只对地址做这个。
我已经尝试了很多事情,但这是我最后一次尝试失败:
$.get('suggest_address.php', function(returned_data) {$('#city').val(returned_data.city);$('#zip').val(returned_data.zip);},'json');
抱歉,如果这是一个糟糕的解释,如果我需要更清楚地告诉我。
差不多,你在自动完成中错过了选择事件。
所以像
<script>
jQuery(document).ready(function(){
$( "#address" ).autocomplete({
source: "suggest_address.php",
minLength: 3,
select: function( event, ui ) {
$('#city').val(ui.item.city);
$('#zip').val(ui.item.zip);
}
});
});
</script>
强制性建议, 不要在新代码中使用mysql_*
函数。它们不再被维护,并被正式弃用。见红框?学习预处理语句,并使用PDO或MySQLi——本文将帮助您决定使用哪一种。如果你选择PDO,这里有一个很好的教程。