在页面加载时,我试图使用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:
<p> <input type='hidden' value="60" data-init-text='Search names' name='editAlbumArtistId' id='editAlbumArtistId' style="width:180px;"/> </p>
每次刷新页面时,我看到PHP脚本被执行,并返回正确的ID和文本。但是,该领域没有更新,我已经认真尝试了我能想到的一切。
我使用的是Select2 3.4.3。
任何帮助将不胜感激。
解决方法
终于解决了!我认为select2不想要一个数组,因为它是一个单一的值,所以我选择了data.results数组的第一个元素。
callback(data.results[0]);
并且如果你设置了多个:true,只需接受整个结果数组;
callback(data.results);