目前我有一个可以使用ajax请求到服务器的下拉列表,但是在select2初始化时附加一些默认选项也很不错。使用 initSelection 函数,我只能附加一个选项,但不能附加完整的预加载数组。我也试图使用 data 选项,但它也不起作用。 这是我的代码:
$("#address-select2").select2({
placeholder: "--- ' . t('I\'ll add new address') . ' ---",
minimumInputLength: 3,
ajax: {
url: "/ajax/address_autocomplete/from",
dataType: "json",
type: "POST",
data: function (term, page) {
return {
q: term
};
},
results: function (data, page) {
return {results: data.addresses};
}
},
initSelection: function (element, callback) {
$.ajax("/ajax/address_autocomplete/from/100", {
dataType: "json"
}).done(function(data) {
callback(data.addresses[0]);
});
},
formatResult: function (address) {
return "<span class=\"dropdown-element\">" + address.text + "</span>";
},
formatSelection: function (address) {
return address.text;
},
formatNoMatches: function () { return "' . t('No result found!') . '";},
formatSearching: function () { return "' . t('Searching...') . '"; },
formatLoadMore: function (pageNumber) { return "' . t('Loading results...') . '"; },
dropdownCssClass : "bigdrop"
});
答案 0 :(得分:1)
请不要通过callback(data.addresses[0]);
请直接传递数组callback(data.addresses);
我应该这样做。