Select2 未通过 AJAX 获取数据

Posted

技术标签:

【中文标题】Select2 未通过 AJAX 获取数据【英文标题】:Select2 not getting data via AJAX 【发布时间】:2013-04-12 16:27:37 【问题描述】:

我有以下代码,应该使用 Select2 通过 AJAX 获取数据

$('#Organisation').select2(
    ajax: 
        url: AppURL + 'Organisations/Manage/SearchByName/',
        dataType: 'json',
        quietMillis: 100,
        data: function (term) 
            return 
                term: term
            ;
        ,
        results: function (data) 
            return 
                results: data
            ;
        
    
);

如果我在搜索“O”时使用 Web Inspector 查看请求,我会得到:

["label":"Organisation 1","ID":2,"label":"Organisation 2","ID":1]

任何想法我做错了什么?我认为结果函数中有一些不正确的地方。

我得到的错误是:Uncaught TypeError: Cannot call method 'toUpperCase' of undefined

【问题讨论】:

能否改变json响应结构 【参考方案1】:

试试

$('#Organisation').select2(
    ajax: 
        url: 'data.json',
        dataType: 'json',
        quietMillis: 100,
        data: function (term) 
            return 
                term: term
            ;
        ,
        results: function (data) 
          var results = [];
          $.each(data, function(index, item)
            results.push(
              id: item.ID,
              text: item.label
            );
          );
          return 
              results: results
          ;
        
    
);

演示:Plunker

【讨论】:

这是非常有用的示例。经过 4 小时的搜索,我的问题解决了。谢谢 非常感谢!对于 select2.min 版本 3.5.4 非常有用 :)【参考方案2】:

除了上面的解决方案,你可以做一件事,而不是返回下面的 json

["label":"Organisation 1","ID":2,"label":"Organisation 2","ID":1]

返回这个

["text":"Organisation 1","id":2,"text":"Organisation 2","id":1]

在查看其他人提出的一些解决方案后遇到了同样的问题并想通了这一点。

【讨论】:

以上是关于Select2 未通过 AJAX 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

Select2-Ajax获取数据

select2:使用ajax获取json时“文本未定义”

Yii2 Kartik Select2 Ajax 控制器 - 结果未显示

select2 - 单击时未选择下拉选项

通过 Ajax 检索其数据的 select2 的编程选择

在 Select2 中获取和缓存结果