2
respostas

Pegar valor de Ajax(post)

Boa tarde. Encapsulei a chamada de um Ajax em uma função e gostaria de saber como posso pegar o retorno dela.

            function chamaAjax(end_point,dados_enviados){
                var result;

                     $.ajax({
                            type: 'POST',
                            data: JSON.stringify(dados_enviados),
                            contentType: 'application/json',
                            url: end_point,
                            async: true,
                            //processData: false,

                          success: function(data) {
                                console.log('sucesso na volta de dados');
                                result = data.result                                
                          },
                          error: function(data) {                                
                                toastr.error('Tente outra vez.'); 
                                result = false;                            
                        }

                    });                   
    return result;                  
            }

Depois chamo a função abaixo e quero pegar o retorno

                        var retorno;
                            retorno = chamaAjax("/AlgumaRota", dadosEnviado);

                        console.log(retorno);

Alguma sugestão ?

Abraço.

2 respostas

Rodrigo,

Blz?

Quando usamos AJAX temos que lembrar que são métodos assíncronos.

Da maneira com que está escrito o seu código para fazer funcionar você terá que fazer com que o AJAX não seja assíncrono. Para isso basta alterar a propriedade async para false.

Para manter o método AJAX como assíncrono uma alternativa é utilizar Promises.

Segue o exemplo:

var jqXhr = $.ajax({
    url: end_point,
    method: "GET",
    data: JSON.stringify(dados_enviados)
});

jqXhr.done(function(data) {
    console.log('successo', data) 
});

jqXhr.fail(function(data) {
    console.log('falha', data) 
});

Blz, mas quando uso o que voce comentou fico com a seguinte mensagem de warning.

compiled.min.js:1 [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software