Select2 JS没有显示来自AJAX的数据

时间:2017-11-20 14:41:57

标签: javascript jquery ajax jquery-select2

我正在尝试使用select2 js最新版本来获取ajax结果,但是我收到以下错误:

  

jQuery.Deferred exception:无法读取属性'结果'未定义的   TypeError:无法读取属性'结果'未定义的

我正在使用的jQuery版本: jquery-3.2.1.min

我正在使用的Bootstrap版本: 4

这是我的代码:



$(document).ready(function(){
    		$('#category').select2({
    			placeholder: 'Subjects',
    			minimumInputLength: 3,
    			allowClear: true,
    			ajax:{
    				url: "<?php echo base_url(); ?>library/ajax-categories",
    				dataType: "json",
    				delay: 250,
    				data: function(params)
    				{
    					return{
    						search: params.term,
    						type: 'public'
    					};
    				},
    				processResults: function(data, page)
    				{
    					var newResults = [];

    					$.each(data, function(index, item)
    					{
    						newResults.push({
    							id: item.CategoryID,
    							text: item.CategoryName
    						});
    					});
    					return
    					{
    						results: newResults
    					}
    				}
    			}
    		});
    	});
&#13;
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<select class="select2 form-control" name="category[]" id="category" placeholder="Choose Subjects" multiple>
    </select>
&#13;
&#13;
&#13;

我从服务器端脚本获得的响应:

[
 {"CategoryID":"1","CategoryName":"A Name"},
 {"CategoryID":"2","CategoryName":"B Name"},
 {"CategoryID":"3","CategoryName":"C Name"}
] 

我在select2模式中转换了以下响应,即&#34; id,text&#34;正如你在我的JS代码中看到的那样。

请帮助我解决此错误。

1 个答案:

答案 0 :(得分:1)

看起来像语法问题。从processResults函数重新格式化return语句,如下所示。问题出在return语句中。

  return {
      results: newResults,
  };

JS引擎会将您的语句转换为:

return;
{
   results: newResults 
}

其他信息herehere