Select2 內置了接收 ajax json 資料時,預設是id
text
常見的情況是 API / Ajax url 是別人提供的所以無法更改輸出
更常見的就是,Json 中預計給你顯示的文字是name
而不是text
,那麼只能用下面的方法去取代
return {
id: item.id,
text: item.name
}
完整js
$(document).ready(function() {
$('#mySelect2').select2({
tags: true,
multiple:true,
ajax: {
delay: 250,
url: //ajax url / api url
dataType : 'json',
processResults: function (data) {
return {
results: $.map(data.results, function (item) {
return {
id: item.id,
text: item.name
}
})
};
}
},
});
});
這樣設定後你就當你的select html是這樣的
<select>
<option value="{{item.id}}">{{item.name}}</option>
</select>
有時某個情況,你希望submit 的value 是text,你就去這樣修改
return {
id: item.name,
text: item.name
}