【问题标题】:error jquery Autocomplete suggestions is undefined错误 jquery 自动完成建议未定义
【发布时间】:2013-05-10 10:55:31
【问题描述】:

我正在使用jquery aucomplete 来自 https://github.com/devbridge/jQuery-Autocomplete/ 但它适用于local,但在使用server side script 时会产生问题

错误图片

我的代码是这样的

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 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;
?>

感谢您的任何建议。

【问题讨论】:

  • 你检查过这个stackoverflow.com/questions/11435433/… 吗?
  • 因为它在本地工作正常,而不是在实时 menas 上工作,所以连接会出现一些问题。您可以将 firebug 插件添加到 firefox 并调试到底发生了什么,它在发送自动完成请求时给出了哪个错误。可能是缺少一些您在本地使用但未在实时服务器上添加的脚本文件。
  • html 和 'search.php' 在同一台服务器上吗?否则可能与跨域资源共享有关
  • @GaneshBora 是jquery ui,我没有使用它。请参阅我的问题以及我在问题中提供的链接。

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


【解决方案1】:

我有问题

  1. 首先,它给出了suggestions.length 的错误
  2. 其次,suggestion.value 出现问题。

所以下面的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;
?>

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

【讨论】:

  • 谢谢,对我来说,我忘了将结果分配给建议。
【解决方案2】:

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

你可以这样做

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

【讨论】:

  • 它不需要接收value 属性或label 属性 - 你可以发回任何你喜欢的key(s)
  • 你是对的,但是你必须在客户端处理响应,有了这些你就有了一个准备好的列表来显示。
  • 它不起作用,但是当我使用echo json_encode(array('suggestions'=&gt;array('suggestion'=&gt;array('value' =&gt; 'AU', 'label' =&gt; 'Australia')))); 时它起作用了,但现在的问题是如何在其中添加更多国家/地区名称?
猜你喜欢
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
  • 2017-05-31
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多