我可以't从通过Ajax创建的select元素中设置值或获取值
I can't set value or get value from select elements created via Ajax
我创建了"omarkasec"作为一个函数,通过ajax从数据库中获取汽车品牌,并通过ajax成功地在select元素添加了该汽车品牌作为选项。但是我不能设置这个select元素的值。
我尝试了这些代码的设置值:
- $('select[name=marka]').val('Lada')
- $('select[name=marka]option[value=Lada]').prop('selected',true)
- $('select[name=marka]option[value=Lada]').attr('selected,'selected)
这些代码不起作用。但如果我加上alert(");在"omarkasec"函数中,代码确实有效,如果我删除警报(");代码不起作用。
<div id="marka" class="gizle" >
Marka: <br>
<select name="marka" onchange="omodelsec()" size="10" ></select>
</div>
<script language='javascript' type='text/javascript'>
function omarkasec() {
$.ajax({
type: "POST",
url: "aracsor.php",
dataType: "json",
data: {
otomobilmodelyili : $("select[name=modelyili]").val(), //This work, because i created php.
},
success: function(donen){
$("#marka").removeClass("gizle");
$("#model").addClass("gizle");
$("#yakit").addClass("gizle");
$("#sanziman").addClass("gizle");
$("#cekis").addClass("gizle");
$("#kasatipi").addClass("gizle");
$("select[name=marka]").empty();
$.each(donen, function (index, otomarka) {
$("select[name=marka]").append($("<option>", {
text : otomarka,
value : otomarka,
}));
});
},
});
//if I add here alert(""); The following code works.
}
</script>
<script language='javascript' type='text/javascript'>
omarkasec();
$('select[name=marka]').val('Lada');
alert($('select[name=marka]').val()); //if I add alert(""); this code work but if I remove alert(""); this code get null value.
</script>
$.ajax()
调用,并向其传递回调函数,但该回调函数此时未执行。
在$.ajax()
之后立即执行语句,但此时内容尚未加载。
但是,如果执行alert()
,则在警报对话框打开时,可能最终会触发回调,因此内容由回调函数加载。如果你关闭弹出窗口,它后面的任何代码都会发现内容在那里。
解决此问题的一种方法是使用作为promise的$.ajax
调用的返回值,并将then
调用链接到它:
function omarkasec(oncomplete) {
return $.ajax({
// ^^^^^^
type: "POST",
url: "aracsor.php",
dataType: "json",
data: {
otomobilmodelyili : $("select[name=modelyili]").val(),
},
success: function(donen){
$("#marka").removeClass("gizle");
$("#model").addClass("gizle");
$("#yakit").addClass("gizle");
$("#sanziman").addClass("gizle");
$("#cekis").addClass("gizle");
$("#kasatipi").addClass("gizle");
$("select[name=marka]").empty();
$.each(donen, function (index, otomarka) {
$("select[name=marka]").append($("<option>", {
text : otomarka,
value : otomarka,
}));
});
},
});
}
// provide (anonymous) callback function to the `then` method:
omarkasec.then(function () {
// this code will only be executed when content is loaded:
$('select[name=marka]').val('Lada');
alert($('select[name=marka]').val());
});
您有一个竞赛条件。您正在调用omarkasec(),而不是等待它完成执行select.val()操作。当您添加警报时,它"起作用",因为它给代码一些额外的时间来完成ajax调用并填充值。当您提醒它时,这些值已经被填充。
所有依赖于ajax调用结果的代码都必须在success回调中。
相关文章:
- 如何在PHP中使用$_POST获取Select元素值
- X秒后刷新select元素
- 根据select选项元素将表单重定向到不同的URL
- 在select元素中显示highchart dashstyle(svg)
- 在IE9中使用jQuery.change定位select元素
- 使用Dalekjs测试工具,如何在Dropdown中选择Option(select元素)当没有“;值“;Option标记
- 如果选择了当前年份,则在Select元素中仅显示当前和未来月份
- 使用jquery验证函数不适用于select元素
- AngularJS:根据其他对象预先选择ng repeat中的select元素
- 减小select元素中的下拉宽度
- 我可以't从通过Ajax创建的select元素中设置值或获取值
- this.defaultValue 返回 select 元素的未定义
- 使用挖空.js如何刷新 Select 元素中的可观察数组
- jQuery val() 返回一个在 select/option 元素上带有 IE8 的数组
- 用于逐步增强的“select”元素的JavaScript中的事件处理程序
- 正在从开发人员工具中的select元素打印选项列表
- 在具有CONTENT标记的自定义元素中使用SELECT标记时出现问题
- 根据select option元素将表单重定向到不同的URL,但重定向后未选中
- 丢失对jQuery存储的select元素的引用
- 如何通过 #ID 100% AngularJS获取元素SELECT中的文本和值