考虑以下HTML:
<select class="form-control" id="resourceName"></select>
我使用JSON中的数据填充select
:
jQuery.getJSON("/Booking/GetMachine", {
TechnologyName: technologyName,
EquipmentTypeName: equipmentTypeName
}, function (machines) {
var $select = $('#resourceName');
$('#resourceName').empty();
$.each(machines, function (i, machine) {
var option = $('<option>', {
value: machine.trim()
}).html(machine.trim()).appendTo($select);
});
});
一旦人口化,我想设置与变量匹配的下拉列表的选定值。
jQuery("#resourceName").val(resourceName);
但是它没有按预期工作。如果有人检查我是否犯过任何错误,我将非常感激。谢谢你们
答案 0 :(得分:2)
如果您在回调函数中设置val()
的{{1}},则在设置select
元素后,您的代码应该可以正常工作:
option
这是因为AJAX调用是异步的。这意味着如果您尝试在回调之外设置值,则实际上在请求完成之前设置值,这意味着没有jQuery.getJSON("/Booking/GetMachine", {
TechnologyName: technologyName,
EquipmentTypeName: equipmentTypeName
}, function (machines) {
var $select = $('#resourceName');
$('#resourceName').empty();
$.each(machines, function (i, machine) {
var option = $('<option>', {
value: machine.trim()
}).html(machine.trim()).appendTo($select);
});
$("#resourceName").val(resourceName); // < set the value here
});
元素可供选择。
答案 1 :(得分:0)
我认为这段代码工作
jQuery.getJSON("/Booking/GetMachine", {
TechnologyName: technologyName,
EquipmentTypeName: equipmentTypeName
}, function (machines) {
var $select = $('#resourceName');
$('#resourceName').empty();
$.each(machines, function (i, machine) {
var option = $('<option>', {
value: machine.trim()
}).html(machine.trim()).appendTo($select);
}).promise().done( function(){ $("#resourceName").val(resourceName);// < set the value here } );
});