我有一个表单,我用ajax加载选择菜单的项目。但是还有一个选项可以使用change()
函数填充所有选择。但由于它需要等待ajax请求完成,我需要设置一个每次都不同的间隔,所以我不能那样使用它。
window.setTimeout(function() {
$("#car_brand").val(vehicle.brand).change();
}, 100);
因此,这会更改#car_brand
的值,car_brand会在数据库发生更改时加载所有选项。因此,如果我没有设置另一个间隔,它会尝试更改它而不加载新选项。有没有办法在这里使用ajax请求的.done()
?
Ajax请求
function updateField(str, id, prevvalue, value, vehicletype){
$.ajax({
type: "get",
url: "inc/ajax/form_rest.php",
data: { q:str, prevvalue:prevvalue, value:value, vehicletype:vehicletype },
success: function(html) {
$('#'+id).html(html);
}
})
.done(function(){
$("#"+id).removeAttr("disabled");
});
}
整体改变功能
function returnVehicleByValue(vehicleValue, vozila){
$.get("inc/ajax/selectMojaVozila.php",
{vehicleValue:vehicleValue},
function(html){
var vehicle = html;
//Select Moja Vozila
$("#"+vozila+"_year").val(vehicle.Year).change()
window.setTimeout(function() {
$("#"+vozila+"_brand").val(vehicle.Marke_vozila).change();
}, 100);
window.setTimeout(function() {
$("#"+vozila+"_model").val(vehicle.Model_vozila).change();
}, 350);
window.setTimeout(function() {
$("#"+vozila+"_type").val(vehicle.Tip_vozila).change();
}, 500);
window.setTimeout(function() {
$("#"+vozila+"_uitvoering").val(vehicle.izvedba_vozila).change();
}, 700);
}, 'json'
);
}
答案 0 :(得分:0)
如果我正确地关注了您的问题,您可以使用complete
处理程序来执行ajax方法:
function updateField(str, id, prevvalue, value, vehicletype){
$.ajax({
type: "get",
url: "inc/ajax/form_rest.php",
data: { q:str, prevvalue:prevvalue, value:value, vehicletype:vehicletype },
success: function(html) {
$('#'+id).html(html);
},
complete: function() {
$("#car_brand").val(vehicle.brand).change();
//all your code
}
})
.done(function(){
$("#"+id).removeAttr("disabled");
});
}
完整回调在success
和error
回调后触发。
请参阅此处的文档:http://api.jquery.com/jQuery.ajax/