Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery将多个PHP数组作为不同的类别自动完成_Php_Jquery_Arrays_Autocomplete - Fatal编程技术网

Jquery将多个PHP数组作为不同的类别自动完成

Jquery将多个PHP数组作为不同的类别自动完成,php,jquery,arrays,autocomplete,Php,Jquery,Arrays,Autocomplete,我可以成功地使用php数组作为自动完成的结果,并能够单独单击它们。然而,我现在还想使用第二个PHP数组,并将其作为一个单独的类别。第一类是用户名,第二类是团队。下面是我的代码: // query to find usernames for the search bar $userSearch = $pdo->prepare("SELECT username FROM members"); $userSearch->execute([]); ($userSearc

我可以成功地使用php数组作为自动完成的结果,并能够单独单击它们。然而,我现在还想使用第二个PHP数组,并将其作为一个单独的类别。第一类是用户名,第二类是团队。下面是我的代码:

// query to find usernames for the search bar
  $userSearch = $pdo->prepare("SELECT username FROM members");


  $userSearch->execute([]);

    ($userSearchResult = $userSearch->fetchAll(PDO::FETCH_COLUMN));

// query to find teams for the search bar
  $teamSearch = $pdo->prepare("SELECT teamName FROM teams");


  $teamSearch->execute([]);

    ($teamSearchResult = $teamSearch->fetchAll(PDO::FETCH_COLUMN));

?>

<script type="text/javascript">
    //Assign php generated json to JavaScript variable
   var userSearch = <?php echo json_encode($userSearchResult); ?>;
   var teamSearch = <?php echo json_encode($teamSearchResult); ?>;

    $.widget("custom.catcomplete", $.ui.autocomplete, {
    _renderMenu: function(ul, items) {
        var self = this,
            currentCategory = "";
        $.each(items, function(index, item) {
            if (item.category != currentCategory) {
                ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>");
                currentCategory = item.category;
            }
            self._renderItem(ul, item);
        });
    }
});

$(function() {
    $("#searchBox").catcomplete({
        source: [{"label":userSearch, "category":"username"}, {"label":teamSearch, "category":"teams"}]
    });
});
</script> 
我得到:

usernames 
   username 1,username 2,username 3
teams 
   team 1,team 2,team 3
我希望我在变量中使用的内爆能解决这个问题,但从来没有

如果我只使用一个变量作为源,而不使用这样的类别:

source: userSearch
我确实成功地获得了用户名列表,如下所示:

username 1
username 2
username 3
但它不包含所需的类别或第二个数组

任何帮助都将不胜感激。谢谢你。

如果有

<?php echo  implode('","',$userSearchResult); ?> 
根据手册-您应将数据设置为:

var data = [
  { label: "anders", category: "" },
  { label: "andreas", category: "" },
  { label: "antal", category: "" },
  { label: "annhhx10", category: "Products" },
  { label: "annk K12", category: "Products" },
  { label: "annttop C13", category: "Products" },
  { label: "anders andersson", category: "People" },
  { label: "andreas andersson", category: "People" },
  { label: "andreas johnson", category: "People" }
];
因此,在您的情况下,您需要修改php数组:

$userSearch = $pdo->prepare("SELECT username FROM members");
$userSearch->execute([]);
$userSearchResult = [];
while ($row = $userSearch->fetch(PDO::FETCH_ASSOC)) {
    $userSearchResult[] = [
        'label' =>  $row['username'],
        'category' =>  "username"
    ];
}
// same to teamnames
$teamSearchResult = [];

$result = array_merge(
    $userSearchResult,
    $teamSearchResult
);
和javascript:

$("#searchBox").catcomplete({
    source: <?php echo json_encode($result)?>
});
$(“#搜索框”).catcomplete({
资料来源:
});

为什么您需要使用
内爆
,已经有了
json\u encode
可用,您使用json\u encode是正确的,但是这并没有改变结果。他们仍然显示逗号的第一个感谢伟大的答案!第二,对不起我回来了哈哈。我知道这是一个单独的问题,但我想我会问你,而不是我开始另一个问题,因为你似乎比我更有知识!这张单子显示得很完美。只是我不能用鼠标或按键选择一个选项。我已经尝试过使用select:函数加载选项,但不知道是否有用。select:function(event,ui){$(“#searchBox”).val(ui.item.label);return false;}没有像我尝试过的其他方法那样有效。我只是快速查看了文档以回答第一个问题,所以我很难说出第二个错误的原因。我相信你能回答一个新问题,并希望它能帮助你)
$userSearch = $pdo->prepare("SELECT username FROM members");
$userSearch->execute([]);
$userSearchResult = [];
while ($row = $userSearch->fetch(PDO::FETCH_ASSOC)) {
    $userSearchResult[] = [
        'label' =>  $row['username'],
        'category' =>  "username"
    ];
}
// same to teamnames
$teamSearchResult = [];

$result = array_merge(
    $userSearchResult,
    $teamSearchResult
);
$("#searchBox").catcomplete({
    source: <?php echo json_encode($result)?>
});