在页面加载时,我正在尝试使用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。
非常感谢任何帮助。
答案 0 :(得分:42)
终于解决了!我认为select2
不需要数组,因为它是单个值,所以我选择了data.results数组的第一个元素。
callback(data.results[0]);
如果你设置了multiple:true,只需接受整个结果数组;
callback(data.results);
答案 1 :(得分:2)
你也可以使用它来减少代码:
initSelection: function(element, callback) {
return $.getJSON("/jQueryScripts/jQuerySelectListArtists.php?id=" + element.val(), null, function(data) {
return callback(data[0]);
});
}
我在Select2 wiki中看到了这个例子,但我不得不像你那样处理回调(数据)和回调(data [0])。