【问题标题】:Select2 not getting data via AJAXSelect2 未通过 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响应结构

标签: javascript jquery-select2


【解决方案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}]

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

【讨论】:

    猜你喜欢
    • 2012-04-10
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 2019-12-23
    • 2018-06-04
    • 2018-06-20
    相关资源
    最近更新 更多