• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Tesla

AJAX - Comportamento esquisito.

7 mensagens neste tópico

if (a!="" && a!=null && b!="" && b!=null && d!="" && d!=null && e!="" && e!=null && f!="" && f!=null){
     
    Http.open('POST',url);
    Http.onreadystatechange=mostra_info;
    Http.send(null);

    document.form1.assunto.value="";
    document.form1.interloc.value="";
    document.form1.empresa.value="";
    document.form1.local.value="";
    document.form1.data.value="";
    document.form1.hora.value="";
    document.form1.obs.value="";

    document.form1.assunto.focus();

    agen_tab_direita();


    } else {
      document.getElementById('txtHint').innerHTML ="<font color=red>Campos obrigatórios por preencher!</font>";
      setTimeout("preencher_agen();",2500);
    }

Esta a parte do código que está a ter comportamentos estranhos.

Da forma em que a vêem ela não actualizada a base de dados nem corre o que está dentro do if como deveria ser. No entanto, se colocar alert's em pontos chave, ela já se comporta como deveria (em baixo).

if (a!="" && a!=null && b!="" && b!=null && d!="" && d!=null && e!="" && e!=null && f!="" && f!=null){
     alert("0");
    Http.open('POST',url);
    Http.onreadystatechange=mostra_info;
    Http.send(null);
    alert("1);
    document.form1.assunto.value="";
    document.form1.interloc.value="";
    document.form1.empresa.value="";
    document.form1.local.value="";
    document.form1.data.value="";
    document.form1.hora.value="";
    document.form1.obs.value="";
     alert("2");
    document.form1.assunto.focus();
     alert("3");
    agen_tab_direita();


    } else {
      document.getElementById('txtHint').innerHTML ="<font color=red>Campos obrigatórios por preencher!</font>";
      setTimeout("preencher_agen();",2500);
    }

Algum de vocês me consegue explicar o porquê de isto acontecer?

Abraço  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O próprio Geshi dá-te a razão do que está mal: falta-te fechar aspas no teu segundo código, linha 6

alert("1);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O próprio Geshi dá-te a razão do que está mal: falta-te fechar aspas no teu segundo código, linha 6

alert("1);

Não é por aí. lol Eu coloquei esses alert's só para ilustrar. Não o codigo que de facto corre.

O que quero dizer, o primeiro código não corre, mas o seguinte já! Ou seja... se tiver umas pausas a meio tudo corre bem, caso contrário não escreve nada na BD.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para não causar dúvidas, o código com os alerts:

if (a!="" && a!=null && b!="" && b!=null && d!="" && d!=null && e!="" && e!=null && f!="" && f!=null){
    alert("Entrei no If");
    Http.open('POST',url);
    Http.onreadystatechange=mostra_info;
    Http.send(null);
    alert("Vou limpar os campos");
    document.form1.assunto.value="";
    document.form1.interloc.value="";
    document.form1.empresa.value="";
    document.form1.local.value="";
    document.form1.data.value="";
    document.form1.hora.value="";
    document.form1.obs.value="";
    alert("Vou seleccionar Assunto");
    document.form1.assunto.focus();
    alert("Vou actualizar o lado direito");
    agen_tab_direita();



    } else {
      document.getElementById('txtHint').innerHTML ="<font color=red>Campos obrigatórios por preencher!</font>";
      setTimeout("preencher_agen();",2500);
    }

Código da função mostra_info();

function mostra_info() {
        if (Http.readyState==4) {
                var response = Http.responseText;
                document.getElementById('txtHint').innerHTML = response;
        }
}

:P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Parece tudo certo... Já experimentaste ver qual o ready state na função mostra_info(), tipo alert(Http.readystate) ? Com a versão dos ifs e com a versão normal?

Sinceramente, não vejo qualquer outro problema :\ Já agora, isso acontece em qualquer browser? já viste alguma indicação da consola de erros do Firefox?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou experimentar noutro browser, porque o firefox não se queixa de nada.

E se correr manualmente o insere_agen.php não há erros. Não sei o que possa ser... mas adiante... venha de lá o IE.

EDIT: No IE faz a inserção dos dados na BD, mas depois não corre as acções de seleccionar o campo assunto e a tabela da direita. :\

EDIT2: Anterioremente estava a trabalhar em Windows 7 64bits, e agora estou em XP 32bits. Agora funciona! Em 64bits não!  :hmm: Alguma razão em especial?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora