我想在頁面加載時通過ajax調用加載值的下拉列表框中設置表單值。我被建議在另一個線程中使用addOption來處理不同的問題,但不幸的是,該選項對我來說不起作用,因爲在這種情況下數據ID和數據名稱是不同的,並且我只在呈現表單時獲取數據ID。我注意到addOption代碼在ajax請求發回數據之前得到執行。在頁面加載時使用不同的值和標籤設置listbox值
以下是該項目的代碼片段。有沒有辦法在ajax請求完成後設置值?
HTML
<select name="country" placeholder="Please Select Country ..."></select>
人口數據,JavaScript代碼通過Ajax調用返回
$('[name="country"]').selectize({
valueField: 'id',
labelField: 'name',
searchField: 'name',
preload: true,
create: false,
render: {
option: function(item, escape) {
return '<div>' + escape(item['name']) + '</div>';
}
},
load: function(query, callback) {
$.ajax({
url: '/countrydata',
type: 'GET',
error: function() {
callback();
},
success: function(res) {
callback(res);
}
});
},
});
數據
id name
1 USA
2 China
3 Japan
以下是我值設置代碼我要工作
$('[name="country"]').selectize();
$('[name="country"]')[0].selectize.setValue(3);
有valueField和labelField屬性是一樣的,我可以用以下addOption方法在另一篇文章建議,但因爲我只得到編號後窗體渲染,我不能使用下面的代碼。
var item = {};
item.id = countryName;
item.name = countryName;
$('[name="country"]')[0].selectize.addOption(item);
嗨。從您的AJAX返回的數據具有您在問題中發佈的完全格式?像列一樣。或者它是一個JSON響應? –
我已經寫了這個[jsfiddle](https://jsfiddle.net/awrffv2m/)與一個簡單的AJAX請求使用JSON模型,它似乎工作。 –