错误jquery自动填充建议未定义

时间:2013-05-10 10:55:31

标签: php jquery json autocomplete jquery-ui-autocomplete

我正在使用jquery aucomplete https://github.com/devbridge/jQuery-Autocomplete/ 但它适用于local,并在使用server side script

时产生问题

错误img

enter image description here

我的代码就像

HTML

<div>
        <input type="text" name="country" id="autocomplete"/>
</div>
<div id="selection"></div>

CSS

.autocomplete-suggestions { border: 1px solid #999; background: #FFF; cursor: default; overflow: auto; }
.autocomplete-suggestion { padding: 2px 5px; white-space: nowrap; overflow: hidden; }
.autocomplete-selected { background: #F0F0F0; }
.autocomplete-suggestions strong { font-weight: normal; color: #3399FF; }

SCRIPT

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="jquery.autocomplete.js"></script>
<!-- Above js file can be downloaded from
https://github.com/devbridge/jQuery-Autocomplete/blob/master/src/jquery.autocomplete.js
-->
<script type="text/javascript">
    $('#autocomplete').autocomplete({
        serviceUrl: 'search.php',
        onSelect: function(suggestion) {
            $('#selction-ajax').html('You selected: ' + suggestion.value + ', ' + suggestion.data);
        }
    });
</script>

PHP页面脚本 search.php

<?php
    if($_REQUEST['query']=='a')
    {
        echo json_encode(array('AD'=>'Adrew','AU'=>'Australia'));
    }
    if($_REQUEST['query']=='b')
    {
        echo json_encode(array('BR'=>'Brazil','BA'=>'Bangladesh'));
    }
    if($_REQUEST['query']=='i')
    {
        echo json_encode(array('IN'=>'India','IND'=>'Indonasia'));
    }
    return;
?>

感谢您的任何建议。

2 个答案:

答案 0 :(得分:4)

我遇到了问题

  1. 首先,它为suggestions.length
  2. 提供了错误
  3. 其次是问题suggestion.value
  4. 所以下面的json encoding工作正常

    echo json_encode(array('suggestions'=>array(array('data'=>'AU','value'=>'Australia'),array('data'=>'IN','value'=>'India'))));
    

    完整的PHP代码

    <?php
        if($_REQUEST['query']=='a')
        {
            echo json_encode(array('suggestions'=>array(array('data'=>'AU','value'=>'Australia'),array('data'=>'IN','value'=>'India'))));
        }
        else if($_REQUEST['query']=='b')
        {
            echo json_encode(array('suggestions'=>array(array('data'=>'BR','value'=>'Brazil'),array('data'=>'BA','value'=>'Bangladesh'))));
        }
        else if($_REQUEST['query']=='i')
        {
            echo json_encode(array('suggestions'=>array(array('data'=>'IN','value'=>'India'),array('data'=>'IND','value'=>'Indonesia'))));
        }
        else
            echo json_encode(array('suggestions'=>array(array('data'=>'NF','value'=>'Not Found'))));
        return;
    ?>
    

    感谢所有人的宝贵时间 再次感谢。

答案 1 :(得分:1)

您在PHP中回显错误的格式,自动完成需要接收具有value属性或label属性或两者的对象数组。

你可以做这样的事情

echo json_encode(array('value' => 'AU', 'label' => 'Australia'));