【问题标题】:Select2 returns TypeError: data is undefinedSelect2 返回 TypeError:数据未定义
【发布时间】:2017-12-18 10:27:04
【问题描述】:

我正在尝试让 Select2 与 Rails 一起使用。我的 API 端点正常工作,但我在控制台中收到 TypeError: data is undefined 消息,因此未填充选择字段。

我的代码如下所示:

$(document).ready(function() {
  return $('#form_emails').select2({
    placeholder: 'User list',
    minimumInputLength: 3,
    ajax: {
      url: '/api/s/users',
      dataType: 'json',
      quietMillis: 250,
      data: function(term) {
        return { q: term };
      },
      results: function(data) {
        var results;
        results = [];
        $.each(data, function(idx, item) {
          results.push({
            'id': item.id,
            'text': item.first_name + ' ' + item.last_name
          });
        });
        return { results: results };
      }
    }
  });
});

知道为什么我可能会收到上述错误吗?提前致谢!

【问题讨论】:

  • 尝试使用processResults: function(data) { 而不是results: function(data) {

标签: javascript ruby-on-rails jquery-select2


【解决方案1】:

根据 Select2 文档,您可以从 Ajax 请求转换数据的函数名为 processResults,而不是 results

见:https://select2.org/data-sources/ajax#transforming-response-data

所以正确的代码应该是:

$(document).ready(function() {
  return $('#form_emails').select2({
    placeholder: 'User list',
    minimumInputLength: 3,
    ajax: {
      url: '/api/s/users',
      dataType: 'json',
      quietMillis: 250,
      data: function(term) {
        return { q: term };
      },
      processResults: function(data) {
        var results;
        results = [];
        $.each(data, function(idx, item) {
          results.push({
            'id': item.id,
            'text': item.first_name + ' ' + item.last_name
          });
        });
        return { results: results };
      }
    }
  });
});

【讨论】:

    猜你喜欢
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 2021-11-22
    • 2017-04-07
    相关资源
    最近更新 更多