来自服务器的响应未显示在 Select2 下拉列表中

Response from server is not showing in Select2 dropdown

本文关键字:Select2 下拉列表 显示 服务器 响应      更新时间:2023-09-26

这是我的ajax,用于在下拉列表中显示搜索项目select2。但问题来了。我收到服务器响应,但该响应未显示在下拉列表中select2

$('#txtTest').select2({
    minimumInputLength: 2,
    ajax: {
        url: "/student/list/",
        dataType: 'json',
        type: "Get",
        data: function(query) {
            alert(query.term);
            return { q: query.term };
        },
        processResults: function(data,page) {
            console.log(data);               
            return {
                results:data                    
            }
        }
    }
});

控制器

public JsonResult list(string q)
{
    var obj = (from c in db.selects 
               where c.name.ToLower().StartsWith(q.ToLower().Trim())         
               select new
               {
                   Id=c.ID,
                   Text=c.name
               }).ToList();
    return Json(obj, JsonRequestBehavior.AllowGet);
}

查看我的隐藏文本字段

<input type="hidden"  id="txtTest" class="input-xlarge" data-placeholder="Choose An Option.." /> 

看起来您正在使用 Select2 v4。如果是这种情况,您需要将隐藏的输入元素更改为选择元素。

从 Select2 4.0.0 beta 1 发行说明中:

<select> 已替换所有选项<input type="hidden" /> (包括远程数据)

您可以使用:

<select id="txtTest" class="input-xlarge" data-placeholder="Choose An Option..">
</select>

此外,返回的对象应具有idtext属性,而它们当前具有IdText属性。更改服务器代码以返回正确的属性名称,或更改 processResults 函数以更正对象。

processResults: function(data) {
    return {
        results: $.map(data, function(item) {
            return { id: item.Id, text: item.Text };
        })
    };
}

斯菲德尔