Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vitorpre

Esperar requisição ajax para executar função

Recommended Posts

Olá,

 

estou com um problema utilizando AJAX e queria saber se alguém pode me ajudar.

 

Estou tentando selecionar uma opção de um select, só que esse select é preenchido utilizando AJAX, dai ocorre um condição de corrida. Queria saber se há alguma forma de esperar a ação do ajax acabar para executar esta outra função.

OBS: encontrei uma solução gambiarra utilizando timeout, mas queria uma mais correta.

$(document).ready(function () {


    $('#iLocal').change(function (e) {

        $('#iSetor').empty();
        var id = $('#iLocal').val();
        $.getJSON('recebe-JSON.php?opcao=setor&valor=' + id, function (dados) {
            if (dados.length > 0) {
                var option = '<option>Selecione o Setor</option>';
                $.each(dados, function (i, obj) {
                    option = option + '<option value="' + obj.codigo + '">' + obj.sigla + '</option>';
                });
            } else {

                $('#mensagem').html('<span class="mensagem">Não foram encontrados estados para esse país!</span>');
            }
            $('#iSetor').html(option);


        });


    });

    $("#iLocal option[value = '" + departamento[0].codigolocal + "']").attr("selected", true);
    $("#iLocal").trigger("change");
    setTimeout(
            function ()
            {
                $("#iSetor option[value = '" + departamento[0].codigodepartamento + "']").attr("selected", true);
            }, 20);



});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Muito obrigado! Funcionou!

 

Pra quem precisar:

 

 

$(document).ready(function () {


    $('#iLocal').change(function (e) {

        $('#iSetor').empty();
        var id = $('#iLocal').val();
        var status = $.getJSON('recebe-JSON.php?opcao=setor&valor=' + id, function (dados) {
            if (dados.length > 0) {
                var option = '<option>Selecione o Setor</option>';
                $.each(dados, function (i, obj) {
                    option = option + '<option value="' + obj.codigo + '">' + obj.sigla + '</option>';
                });
            } else {

                $('#mensagem').html('<span class="mensagem">Não foram encontrados estados para esse país!</span>');
            }
            $('#iSetor').html(option);


        });

        status.done(function () {

            $("#iSetor option[value = '" + departamento[0].codigodepartamento + "']").attr("selected", true);
            departamento[0].codigodepartamento = null;
        });


    });

    $("#iLocal option[value = '" + departamento[0].codigolocal + "']").attr("selected", true);
    $("#iLocal").trigger("change");
    


});

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.