Select2和initSelection回调

在页面加载时,我正在尝试使用initSelection来选择ID 60 (输入字段的指定值) 。 我似乎无法让它正常工作。

PHP脚本运行良好并返回正确的值,但如何让JS正确地执行回调?

JavaScript的:

$(document).ready(function() { $('#editAlbumArtistId').select2({ placeholder: 'Search names', ajax: { url: "/jQueryScripts/jQuerySelectListArtists.php", dataType: 'json', quietMillis: 100, data: function (term, page) { return { term: term, //search term page_limit: 10 // page size }; }, results: function (data, page) { return {results: data.results}; } }, initSelection: function(element, callback) { var id = $(element).val(); if(id !== "") { $.ajax("/jQueryScripts/jQuerySelectListArtists.php", { data: {id: id}, dataType: "json" }).done(function(data) { callback(data); }); } } }); }); 

HTML:

 

每次刷新页面时,我都会看到PHP脚本被执行并返回正确的ID和文本。 但是,该领域没有更新,我已经认真尝试了我能想到的一切。

我正在使用Select2 3.4.3。

任何帮助将不胜感激。

终于解决了! 我认为select2不需要数组,因为它是单个值,所以我选择了data.results数组的第一个元素。

 callback(data.results[0]); 

如果你设置了multiple:true,只需接受整个结果数组;

 callback(data.results); 

您也可以使用它来减少代码:

  initSelection: function(element, callback) { return $.getJSON("/jQueryScripts/jQuerySelectListArtists.php?id=" + element.val(), null, function(data) { return callback(data[0]); }); } 

我在Select2 wiki中看到了这个例子,但我不得不像你那样处理回调(数据)和回调(data [0])。