代码之家  ›  专栏  ›  技术社区  ›  Sam

无法使用动态数据创建自动建议功能

  •  1
  • Sam  · 技术社区  · 8 年前

    我正在使用 this plugin 创建自动完成和标记的组合功能。 我的输入字段代码及其相关脚本

    <input id="form-tags-4" name="tags-4" type="text" value="">
    <script type="text/javascript">
      $(function() {
    
        $('#form-tags-4').tagsInput({
          'autocomplete': {
    
            source: [
              'apple',
              'banana',
              'orange',
              'pizza'
            ]
          } 
        });
      });
    </script>
    

    它可以很好地处理静态数据,但是我希望应该存储数据库的动态数据来代替存储在源代码中的静态数据。

    当前我的动态数据是$normal\u skill,其格式如下所示

    Array
    (
        [0] => stdClass Object
            (
                [normal_skill] => HTML
            )
    
        [1] => stdClass Object
            (
                [normal_skill] => CSS
            )
    
        [2] => stdClass Object
            (
                [normal_skill] => Javascript
            )
    )
    

    我试图从normal\u skill收集数据,并将其放入如下数组中

    $items = array();
    foreach($normal_skill as $n_skill) {
     $items[] = $n_skill->normal_skill;
    }
    

    在将source替换为$items后,自动建议和标记功能停止了工作,取而代之的是我称之为$items的source。

    对于测试,我打印了$项,它显示数据,但当替换为源时,就没有数据了。控制台也没有显示任何特定错误。

    谁能告诉我如何用我的数据替换源,我希望它也能执行字母对字母的搜索。例如:-如果我键入“h”,那么以h开头的单词应该在autosuggest中出现,但是现在所有包含“h”的单词都会显示出来

    1 回复  |  直到 8 年前
        1
  •  0
  •   Lawrence Cherone    8 年前

    您是否尝试使用 json_encode() ?

    <input id="form-tags-4" name="tags-4" type="text" value="">
    <script type="text/javascript">
      $(function() {
    
        $('#form-tags-4').tagsInput({
          'autocomplete': {
            source: <?= json_encode($items) ?>
          } 
        });
      });
    </script>
    

    如果是远程源。

    $items = array();
    foreach($normal_skill as $n_skill) {
     $items[] = $n_skill->normal_skill;
    }
    exit(json_encode($items));
    

    然后在javascript中,将其设置为源文件:

    <script type="text/javascript">
      $(function() {
    
        $('#form-tags-4').tagsInput({
          'autocomplete': {
            source: './tags.php'
          } 
        });
      });
    </script>