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

Delay em Requisição AJAX


PROGRAMADOR MAIA

Pergunta

Caros amigos desenvolvedores.

Estou com um problemão!!! rs

Criei uma função para requisição assim:

function enviarDados(args,url,funcao,exibicao) {
    var requisicao = novaRequisicao();
    var res = "'Aguarde'";
    requisicao.onreadystatechange = function() { processaDados(); };
    requisicao.open("POST",url,true);
    requisicao.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    requisicao.setRequestHeader("Content-length", args.length);
    requisicao.set
    requisicao.setRequestHeader("Connection", "close");
    requisicao.send(args);
        function processaDados() {
            if (requisicao.readyState == 4) {
                if (requisicao.status == 200) {
                    if (exibicao != '' && exibicao != null) {
                        exibicao(requisicao.responseText);
                    }
                    
                }else{
                    
                    if (exibicao != '' && exibicao != null) {
                        exibicao(requisicao.responseText);
                    }
                }
            }    
        }
        
    if (funcao != null) { setTimeout('eval(' + funcao + ')',1000); };    
}
function novaRequisicao() {
    var tipoObj = false;
    try {
        tipoObj = new ActiveXObject('Msxm12.XMLHTTP');
    } catch(e) {
        try {
            tipoObj = new ActiveXObject('Microsoft.XMLHTTP');
        } catch(e) {
            tipoObj = new XMLHttpRequest();
        }
    }
    
    return tipoObj;    
}
Esse programa funciona perfeitamente. Mas ela gera um certo delay. Gera demora. E tem casos que parece que o javascript segue o seu processamento sem antes receber uma resposta do servidor. EX:
var teste = 0;
function inicio(){
    obterNumero();
    alert(teste);
}

function obterNumero(){
      function gravarNumero(numero)
      {
            teste = numero;
      }


      var url = "programas/mov/saida.php";
      var args = "acao=1&acesso=5";    
      enviarDados(args,url,"",gravarNumero);    
}

Vamos supor que a função obterNumero receba do servidor o numero 10.

ERROS:

1- o alert que eu dei não vai mostrar o valor 10. E sim o valor 0 (valor inicial da variavel global)

2- Se eu der um alert do parametro numero dentro da função gravarNumero, o programa primeiro executa o alert que está dentro da função inicio() mostrando o valor de teste como 0... e só depois mostra o alert que esta na função gravarNumero, mostrando o valor correto que é 10.

Pessoal como faço para corrigir isso?????

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...