jQuery get json from PHP


jQuery get json from PHP

这个问题已经困扰我两天了,我已经花了足够的时间来自己解决这个问题。

我目前有两个页面,其中一个页面上有一个表单,其中一个地址字段是通过从另一个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,这里有一个很好的教程。