使用php foreach生成的结果自动完成jquery

使用php foreach生成的结果自动完成jquery,php,jquery,image,autocomplete,foreach,Php,Jquery,Image,Autocomplete,Foreach,几天来,我一直在努力让jqueryautocomplete按我需要的方式工作 到目前为止,我有一个很好用的: <script> $(function() { var availableTags = [<?php $taglist = Array(); foreach ($users as $user) if ($user->getAttribute('first_name') == ''){ $taglist[] = '"'.$user-&

几天来,我一直在努力让jqueryautocomplete按我需要的方式工作

到目前为止,我有一个很好用的:

<script>
$(function() {
var availableTags = [<?php 

$taglist = Array();
  foreach ($users as $user) 
    if ($user->getAttribute('first_name') == ''){
       $taglist[] = '"'.$user->getUserName().'"';
}else{
       $taglist[] = '"'.$user->getAttribute('first_name').' '.$user->getAttribute('last_name').'"';
}

echo join(',', $taglist); 

?>];

$("#searchmem").autocomplete({
    source: availableTags,
    minLength: 2,
    select: function(event, ui) { 
        $("#searchmem").val(ui.item.label);
        $("#submit").click(); 
    }
}).data("autocomplete")._renderItem = function (ul, item) {
        return $("<li />")
        .data("item.autocomplete", item)
        .append("<a><img src='/files/avatars/1.jpg' />" + item.label + "</a>")
        .appendTo(ul);
    }
});
</script>

$(函数(){
var availableTags=[];
$(“#searchmem”).autocomplete({
资料来源:availableTags,
最小长度:2,
选择:函数(事件,ui){
$(“#searchmem”).val(ui.item.label);
$(“#提交”)。单击();
}
}).数据(“自动完成”)。\u renderItem=功能(ul,项目){
返回$(“
  • ”) .data(“item.autocomplete”,item) .append(“+item.label+”) .附录(ul); } });
  • 这将输出相应用户用户名或全名旁边的image/files/avatars/1.jpg

    我遇到的问题是试图输出正确的用户头像。每个.jpg文件都与用户名对应,因此我可以在src中使用$user->getUserID(),但这不起作用,因为它不在foreach$users as$user循环中

    我曾尝试将整个自动完成脚本放在foreach中,当测试时,它确实发出了正确的警报,但自动完成不起作用

    我还尝试创建两个变量,例如

    availableTags1={label:..$user->getUserName()等..}

    availableTags2={avatar:..$user->getUserID()等..}

    availableTags=availableTags1+availableTags2

    .data(“自动完成”)。\u renderItem=功能(ul,项目){
    返回$(“
  • ”) .data(“item.autocomplete”,item) .append(“+item.label+”) .附录(ul); }

  • 但这同样没有起作用。我完全迷路了!如何让它将图像与相关用户名一起输出?非常感谢您的帮助。

    在您的情况下,您必须构建如下阵列:

    var availableTags = [
        {label: '...', avatar: '...'},
        {label: '...', avatar: '...'},
        ...
    ];
    
    和使用:

    .data("autocomplete")._renderItem = function (ul, item) {
        return $("<li />")
        .data("item.autocomplete", item)
        .append("<a><img src='" + item.avatar + "' />" + item.label + "</a>") // Note the additional double quotes
        .appendTo(ul);
    }
    
    .data(“自动完成”)。\u renderItem=功能(ul,项目){
    返回$(“
  • ”) .data(“item.autocomplete”,item) .append(“用于使用自定义数据)

    然后,为了通过PHP生成数组,您应该使用:

    <?php
    $taglist = Array();
    foreach ($users as $user) {
        $data = array();
        if ($user->getAttribute('first_name') == ''){
            $data["label"] = $user->getUserName();
        } else {
            $data["label"] = $user->getAttribute('first_name').' '.$user->getAttribute('last_name');
        }
        $data["avatar"] = $user->getUserID();
        $taglist[] = $data;
    }
    ?>
    var availableTags = <?php echo json_encode($taglist); ?>;
    
    
    var availableTags=;
    
    <?php
    $taglist = Array();
    foreach ($users as $user) {
        $data = array();
        if ($user->getAttribute('first_name') == ''){
            $data["label"] = $user->getUserName();
        } else {
            $data["label"] = $user->getAttribute('first_name').' '.$user->getAttribute('last_name');
        }
        $data["avatar"] = $user->getUserID();
        $taglist[] = $data;
    }
    ?>
    var availableTags = <?php echo json_encode($taglist); ?>;