当数据库中没有数据时,Select2 AJAX不显示“找不到数据”,而是显示搜索参数作为选择选项

问题描述

我一直在研究一个项目,该项目需要从ajax调用中加载select2选项。

代码工作正常,除了搜索结果外,它始终将搜索参数显示为选项。即使数据库中没有数据,它仍将其显示为选项,而不显示“未找到数据”。

我的代码在这里

       $(".search_user").select2({
            minimumInputLength: 11,tags: [],ajax: {
                url: "/user/get_user",dataType: 'json',type: "GET",quietMillis: 250,data: function (term) {
                    return {
                        term: term
                    };
                },processResults: function (data) {
                    var Return = [];
                    for (var i in data.item) {
                        console.log(data.item[i])
                        if (data.item[i].id != data.item[i].text) {
                            Return.push(data.item[i]);
                        }
                    }
                    return {
                        results: Return
                    }
                }
            }
        });

我的返回json就是这样

{"item":[{"id":16,"name":"Razin Abid"}]}

我的视图看起来像这样。

enter image description here

请帮帮我。

解决方法

如果您在stisla上使用Firemodal

$('#modal-create-promo').click(()=>{
    setTimeout(()=>{
        $('#fire-modal-1').removeAttr('tabindex');
    });
});

    $("#modal-create-promo").fireModal({
    ...
});

这对我有用

,

那是因为您启用了 select2 中的标签选项。您需要从代码中删除“标签:[]”。

访问:https://select2.org/tagging

所以,你的代码应该是这样的:

$(".search_user").select2({
        minimumInputLength: 11,ajax: {
            url: "/user/get_user",dataType: 'json',type: "GET",quietMillis: 250,data: function (term) {
                return {
                    term: term
                };
            },processResults: function (data) {
                var Return = [];
                for (var i in data.item) {
                    console.log(data.item[i])
                    if (data.item[i].id != data.item[i].text) {
                        Return.push(data.item[i]);
                    }
                }
                return {
                    results: Return
                }
            }
        }
    });