Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Retorno de função "Ajax"


diogoleter

Pergunta

Olá,

Estou tendo sérias dificuldades com um função que utiliza Ajax. Segue abaixo o código:

function add_novoidioma(value){
        
        var params;
        params = "n="+value;             
         
        var xmlhttp=Inint_AJAX();
        xmlhttp.onreadystatechange = function () { 
            if (xmlhttp.readyState==4) {
                if (xmlhttp.status==200) {      
        
                    var res=xmlhttp.responseText;
                                        return res;

                } 
            }
        };
        
        xmlhttp.open("POST", "worksource/includes/add_idioma.php", true);
        xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xmlhttp.send(params);    
            
}

No meio do código há a linha com return res; que deveria retornar o valor final da chamada. Em outra função tenho a seguinte chamada como exemplo alert(add_novoidioma('Inglês')); mas recebo "undefined".

Onde está o erro? nem mesmo uma variável global ele altera....

Editado por diogoleter
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

O erro não está em lugar nenhum,

O que acontece é que AJAX trabalha de maneira assíncrona, por isso ao você chamar a variável "res" ela ainda não está definida, pois o AJAX ainda não deu uma resposta.

maneira assíncrona = no popular isso significa: "continua fazendo coisas enquanto outras são feitas, não espera respostas de coisas"

Link para o comentário
Compartilhar em outros sites

  • 0

Nooope...

Não tem nada a haver com o sincronismo das funções.

O negócio é que você está retornando um valor para a função onreadystatechange, não está retornando um valor para a função add_novoidioma.

Perceba, você está usando uma função dentro da outra, quando a função mais interior retorna algo, ela vai retornar para a variável que a chamou e não para a váriavel que chamou a função mais externa.

Cuidado com isso.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...