【问题标题】:Select2 JS not showing data from AJAXSelect2 JS 不显示来自 AJAX 的数据
【发布时间】:2017-11-20 14:41:57
【问题描述】:

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

jQuery.Deferred 异常:无法读取未定义的属性“结果”
TypeError:无法读取未定义的属性“结果”

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

我正在使用的引导版本: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
    					}
    				}
    			}
    		});
    	});
<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>

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

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

如您在我的 JS 代码中所见,我将以下响应转换为 select2 模式中的“id, text”。

请帮我解决这个错误。

【问题讨论】:

标签: javascript jquery ajax jquery-select2


【解决方案1】:

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

  return {
      results: newResults,
  };

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

return;
{
   results: newResults 
}

其他信息herehere

【讨论】:

  • 非常感谢!这只是语法写作风格问题。我用这个修复了它:return { results: newResults };
  • 很高兴能帮上忙!
猜你喜欢
  • 2015-10-08
  • 2020-10-05
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
  • 2018-12-28
  • 2016-04-10
  • 2018-04-25
  • 1970-01-01
相关资源
最近更新 更多