从另一个函数获取请求的.done()

时间:2013-06-16 14:29:31

标签: php javascript jquery ajax function

我有一个表单,我用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'
    );
}

1 个答案:

答案 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");
        });
}

完整回调在successerror回调后触发。 请参阅此处的文档:http://api.jquery.com/jQuery.ajax/