2017-12-18 223 views
1

我试图让Select2使用Rails。我有API端点工作,但我的控制台中收到一条TypeError: data is undefined消息,所以选择字段没有被填充。Select2返回TypeError:数据未定义

我的代码如下所示:

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

任何想法,为什么我可能会得到上述错误?提前致谢!

+2

尝试使用'processResults:功能(数据){',而不是'结果:功能(数据){'。 –

回答

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

谢谢,这与一些编辑工作! – DaniG2k