我正在寻找一种在动态加载(使用json值)后选择下拉值的方法。 我想在加载完成后这样做。
以下是示例:
$.ajax({
url:"/echo/json/",
data:data,
type:"POST",
success:function(response)
{
console.log(response);
var items = '<option value="0">-- All --</option>';
$.each(response, function (i, channel) {
items += "<option value='" + channel.Value + "'>" + channel.Text + "</option>";
});
$('#PromotionFilter_Channel_ID').html(items);
// HERE IT WORKS :$("#PromotionFilter_Channel_ID").val(3);
}
});
//test doesn't work
$("#PromotionFilter_Channel_ID").val(3);
小提琴样本: http://jsfiddle.net/mrflo/UdaNA/2/
感谢您的帮助!
答案 0 :(得分:3)
当您的ajax调用被触发时,您的代码会继续执行流程,因为默认情况下ajax调用是异步的。当您尝试设置所选值时,尚未填充组合框。
虽然ajax调用可以在同步模式下执行,但通常它不是正确的方法。您应该在成功回调时分配选定的值。
答案 1 :(得分:1)
小心,ajax是异步的!这意味着当您尝试选择选项时,ajaxcall仍然可能正忙。你想在ajaxcall的oncomplete中找到它。 如果请求的页面很慢或连接不是最佳,则可能会发生这种情况。
虽然ajaxrequest仍在执行其工作,但其余的javascript仍在继续。您正在尝试选择尚不存在的选项!记住,你在这里想着几毫秒。
你实际上是自己给出了答案,当ajax完成时你想要它。
$("#PromotionFilter_Channel_ID").find('option[value="3"]'); // or more native:
或者
$("#PromotionFilter_Channel_ID")[0].selectedIndex = 3; // or 2, not sure if 0 based-index
答案 2 :(得分:1)