Javascript 在每次按键时从ajax填充select2

Javascript 在每次按键时从ajax填充select2,javascript,php,jquery,ajax,jquery-select2,Javascript,Php,Jquery,Ajax,Jquery Select2,我不是很熟悉,文档也不是那么容易理解 我有一个撰写消息模块,我有一个select2,支持标记作为消息接收者的输入。每个keyup都将触发一个ajax,它将查询所有结果,其中类似于“%something%” ajax的结果如下(当已有1个结果时): 如果正常显示,它应该是什么样子 echo "<option value='".$sendTo['id']."'>".$sendTo['firstname']." ".$sendTo['lastname']."</option>"

我不是很熟悉,文档也不是那么容易理解

我有一个撰写消息模块,我有一个
select2
,支持标记作为消息接收者的输入。每个keyup都将触发一个ajax,它将查询所有结果
,其中类似于“%something%”

ajax的结果如下(当已有1个结果时):

如果正常显示,它应该是什么样子

echo "<option value='".$sendTo['id']."'>".$sendTo['firstname']." ".$sendTo['lastname']."</option>";
问题是不能单击ajax附加的结果

我相信这是因为我只是手动访问了主题创建的元素。类和ID
.select2-results\uu选项
#select2-tagRecipients-results
.select2-search\uu字段
都来自使用FireBug检查元素。包括控制器中的整个
echo


基本上,用户可以输入一些关键字,结果显示为
,其中列的值(如“%keywords%”)将显示为选项。然后可以选择多个结果作为收件人。

尝试阅读并注意返回插件所需的结构。因此,我应该调用
$(“.js数据示例ajax”)。选择2({
on('keyup')
?我应该保留
。选择2-search\u字段作为选择器(它是动态创建的)不!!
ajax
选项自己做。你可以设置
keypress
delay
和更多,但是让插件来做这项工作,因为他做得更好。阅读它可能会帮助你。我的
Controller
应该是什么样子?我的HTML和脚本现在看起来当然是这样了。你的控制器需要返回一个
json
但不是
html
内容。你的
json
需要像我发布的问题一样。比如:
[{“itemName”:“测试项目编号1”,“id”:5}]
。我找到了一个
select2
php
。如果你同意,请告诉我。
echo "<option value='".$sendTo['id']."'>".$sendTo['firstname']." ".$sendTo['lastname']."</option>";
<select multiple="true" name="tagRecipients[]" id="tagRecipients" class="form-control select2 input-inline input-xlarge"></select>
public function sendToUser() {
    $findthis = $this->input->post('findthis');
    $this->data['recipients'] = $this->User_model->sendToUser($findthis);
    if($this->data['recipients']){
        foreach($this->data['recipients'] as $sendTo){
            echo "<li id='select2-tagRecipients-result-".$sendTo['school_id']."' class='select2-results__option' role='treeitem' aria-selected='false'>".$sendTo['firstname']." ".$sendTo['lastname']."</li>";
        }
    } else {
        echo "No match found";
    }
}
$(document).on('keyup','.select2-search__field',function(){
    $('.select2-results__option').remove();
    var tosearch = $(this).val();
    $.ajax({
        type: "POST",
        url: BASE_URL+'users/sendtouser',
        data: {findthis: tosearch},
        success: function(data){
            $('#select2-tagRecipients-results').append(data);
        }
    });       
});