Javascript AJAX填充选择2不可单击

Javascript AJAX填充选择2不可单击,javascript,php,jquery,ajax,jquery-select2,Javascript,Php,Jquery,Ajax,Jquery Select2,我正在使用Select2进行一个项目。第二个选择框将根据第一个框中的选定项填充,如下面的链接所示。但是,由于某些原因,我无法单击第二个选择框中的第一项。如果我想选择第一项,唯一的方法是首先选择其他用户,然后返回到第一项。我怎样才能解决这个问题 视频: 我的代码: 这是第一个选择框,由常规PHP(Laravel)填充。这里一切都很好 <div class="form-group"> <label for="select"> Partner: </label&

我正在使用Select2进行一个项目。第二个选择框将根据第一个框中的选定项填充,如下面的链接所示。但是,由于某些原因,我无法单击第二个选择框中的第一项。如果我想选择第一项,唯一的方法是首先选择其他用户,然后返回到第一项。我怎样才能解决这个问题

视频:

我的代码:

这是第一个选择框,由常规PHP(Laravel)填充。这里一切都很好

<div class="form-group">
    <label for="select"> Partner: </label>
    <select id="select" name="select" class="searchselect searchselectstyle">
        @foreach($partners as $i => $partner)
            <option {{$i == 0 ? 'selected' : ''}} value="{{$partner->id}}">{{$partner->name}}</option>
        @endforeach
    </select>
</div>

我找到了一个解决方案,如下所示:

<script type="text/javascript">
    $(document).ready(function() {
        $(".searchselect").select2();

        search();
        $("#select").change(function(){
            search();
        });
    });

    function search(){
        var $post = {};
        $post.id = $("#select").val();
        $("#select2").select2({
            ajax: {
                dataType: "json",
                type: "POST",
                data: function (params) {
                    var query = {
                        term: params.term,
                        id: $post.id
                    };
                    return query;
                },
                url: '/json/getusers',
                cache: false,
                processResults: function (data) {
                    return {
                        results: data
                    };
                }
            }
        });
    }
</script>

$(文档).ready(函数(){
$(“.searchselect”).select2();
搜索();
$(“#选择”).change(函数(){
搜索();
});
});
函数搜索(){
var$post={};
$post.id=$(“#选择”).val();
$(“#选择2”)。选择2({
阿贾克斯:{
数据类型:“json”,
类型:“POST”,
数据:函数(参数){
变量查询={
术语:params.term,
id:$post.id
};
返回查询;
},
url:“/json/getusers”,
cache:false,
processResults:函数(数据){
返回{
结果:数据
};
}
}
});
}

现在我正在使用Select2中内置的常规AJAX功能,现在一切正常

检查json数据中键“id”的大小写敏感度。可能您返回的是“ID”而不是“ID”

不是那样的

{"results":[{"ID":"3","text":"Exampe 3"},{"ID":"4","text":"Example 4"},{"ID":"16","text":"Example 16"}]}

您是否尝试过在
$之前附加一个空选项(
)。每个
函数?@ArmanOzak会给我一个小的空选项,如:OK。您是否可以在您的
标签上添加
数据占位符=“您喜欢的任何内容”
?顺便说一句,当你这样做的时候,你也应该给你的PHP添加一个空白选项。@ArmanOzak同样的问题:最后一个想法:你能试着把
$('#select2')。select2('destroy')$('#select2')。select2()在创建它们之后?如果这也不起作用,我保证,我已经没有主意了。(:非常感谢兄弟!这是一个解决方案!参数确实需要是'id',而不是另一个名称。
<script type="text/javascript">
    $(document).ready(function() {
        $(".searchselect").select2();

        search();
        $("#select").change(function(){
            search();
        });
    });

    function search(){
        var $post = {};
        $post.id = $("#select").val();
        $("#select2").select2({
            ajax: {
                dataType: "json",
                type: "POST",
                data: function (params) {
                    var query = {
                        term: params.term,
                        id: $post.id
                    };
                    return query;
                },
                url: '/json/getusers',
                cache: false,
                processResults: function (data) {
                    return {
                        results: data
                    };
                }
            }
        });
    }
</script>
{"results":[{"id":"3","text":"Exampe 3"},{"id":"4","text":"Example 4"},{"id":"16","text":"Example 16"}]}
{"results":[{"ID":"3","text":"Exampe 3"},{"ID":"4","text":"Example 4"},{"ID":"16","text":"Example 16"}]}