【问题标题】:Response from server is not showing in Select2 dropdown来自服务器的响应未显示在 Select2 下拉列表中
【发布时间】:2017-12-13 08:31:11
【问题描述】:

这是我的 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.." /> 

【问题讨论】:

    标签: javascript json html asp.net-mvc-4


    【解决方案1】:

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

    来自Select2 4.0.0 beta 1 release notes

    &lt;select&gt; 已将&lt;input type="hidden" /&gt; 替换为所有选项 (包括远程数据)

    你可以使用:

    <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 };
            })
        };
    }
    

    jsfiddle

    【讨论】:

    • 我已将我的 txt 字段从 更改为
    • @ShahzadAshraf - 您能否确认您使用的是 Select2 v4(因为它与以前的版本有很大不同)?另外,您能否展示一下从 ajax 调用返回的数据是什么样的?
    • 这是我的服务器响应..当我在输入字段中键入“sh”时。[{"Id":1,"Text":"shahzad ashraf"},{"Id":6,"文本":"shah"}]
    • 非常感谢...兄弟..它的工作原理..您能解释一下您在 processresults 中添加的代码吗...
    • @ShahzadAshraf - 如果答案解决了您的问题,您可以单击它旁边的复选标记。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多