0

我有一个表单,我用 ajax 加载选择菜单的项目。但是还有一个选项可以使用该change()功能填充所有选择。但是由于它需要等待 ajax 请求完成,所以我需要设置一个每次都不同的间隔,所以我不能那样使用它。

window.setTimeout(function() {
  $("#car_brand").val(vehicle.brand).change();
}, 100);

因此,这会更改 的值,#car_brand并且 car_brand 会在更改时从数据库中加载所有选项。因此,如果我不设置另一个间隔,它会尝试在不加载新选项的情况下更改它。有没有办法在.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'
    );
}
4

1 回答 1

0

如果我正确地关注了您的问题,您可以使用completeajax 方法的处理程序:

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/

于 2013-06-16T15:11:05.873 回答