如何在 select2.js v4.0 中显示 ajax 数据?

Posted

技术标签:

【中文标题】如何在 select2.js v4.0 中显示 ajax 数据?【英文标题】:How display ajax data in select2.js v4.0? 【发布时间】:2015-10-08 22:08:11 【问题描述】:

我在一个 asp mvc 项目中使用 select2 v4.0 https://select2.github.io/,我想从动态数据中显示一个简单的下拉列表

3.6 版的旧方式不再适用:

我有一个 c# 方法:

public JsonResult GetSrcMethod()
 
            var list = new[]
             
                new  id= 0, text= "Smith" ,
                new  id= 1, text= "John" , 
                new  id= 2, text= "Philippe" ,    
            .ToList();

            Object json = JsonConvert.SerializeObject(list);
            return Json(json, JsonRequestBehavior.AllowGet);   
 

因此,返回的数据是:

["id":0,"text":"Smith","id":1,"text":"John","id":2,"text":"Philippe"]

我有一个在以前的 3.6 版本上工作的 javascript 代码:

$(".example-select2").select2(
        ajax: 
            dataType: 'json',
            url: '@Url.Action("GetSrcLanguages", "GetCheckSet")',
            results: function (data) 
                return results: data;
                          
        
    );

它呈现一个显示“未找到结果”的空下拉列表

你知道如何在 v4.0 中做到这一点吗?

【问题讨论】:

【参考方案1】:

Idid 不同,JavaScript 对象的属性区分大小写。这同样适用于Texttext,您希望使用全小写版本。

public JsonResult GetSrcLanguages()
        
            var list = new[]
             
                new  id = 0, text = "Smith" ,
                new  id = 1, text = "John" , 
                new  id = 2, text = "Philippe" ,    
            .ToList();

            Object json = JsonConvert.SerializeObject(list);
            return Json(json, JsonRequestBehavior.AllowGet);   
        

此外,ajax.results 方法在 4.0.0 中已重命名为 ajax.processResults,以避免与具有现有 results 方法的 AJAX 传输冲突。所以你的 JavaScript 实际上应该看起来像

$(".example-select2").select2(
    ajax: 
        dataType: 'json',
        url: '@Url.Action("GetSrcLanguages", "GetCheckSet")',
        processResults: function (data) 
            return results: data;
                      
    
);

【讨论】:

谢谢,你是对的,但肯定还有另一个错误,因为修复该错误后,它仍然显示 'No Result found' ,几乎所有的东西都已经改变了 v4 所以我想结果方法肯定是折旧,我正在寻找新的方法来做到这一点,但我在文档中找不到它 我将方法结果:function (data) return results: data; 替换为 processResults: function (data) return results: JSON.parse(data); 并且它有效!非常感谢,你看到了错误!如果您通过添加该代码示例来更新您的答案,我很乐意将其标记为答案! :D

以上是关于如何在 select2.js v4.0 中显示 ajax 数据?的主要内容,如果未能解决你的问题,请参考以下文章

Select2.js v4.0:如何使用本地数组数据源设置默认选择值?

选择后无法在 select2.js 中显示占位符

如何使用 select2.js

select2.js 未显示结果,如 Django 示例

如何默认选择 select2.js 的下拉值

Laravel:如何使用 select2.js 更新多个 Select 选项