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

TheGlorious

Ajuda com AJAX/JavaScript

11 mensagens neste tópico

Boa noite a todos.

Vem o Ajax/JavaScript não são a minha área, no entanto precisei de utilizar ajax e consegui fazê-lo, mas agora a coisa complicou-se...

Baseei-me no seguinte código: w3schools.

O meu problema é que preciso de usar essa mesma função duas vezes na mesma página em div's diferentes, no entanto, quando o tento fazer simplesmente não aparecem. O que eu tentei foi o seguinte:

var xmlhttp;
function loadXMLDoc(url)
{
xmlhttp=null;
if (window.XMLHttpRequest)
  {// code for Firefox, Opera, IE7, etc.
  xmlhttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
if (xmlhttp!=null)
  {
  if (url == 'pagina1.php') {
  xmlhttp.onreadystatechange=state_Change;
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
  } else if (url == 'pagina2.php') {
  xmlhttp.onreadystatechange=state_Change2;
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
  }

  }
else
  {
  alert("O teu navegedor não suporta AJAX.");
  }
}

function state_Change()
{
if (xmlhttp.readyState==4)
  {// 4 = "loaded"
  if (xmlhttp.status==200)
    {// 200 = "OK"
    	document.getElementById('T1').innerHTML=xmlhttp.responseText;
    }
  else
    {
    alert("Ocorreu o seguinte erro:" + xmlhttp.statusText);
    }
  }
}

function state_Change2()
{
if (xmlhttp.readyState==4)
  {// 4 = "loaded"
  if (xmlhttp.status==200)
    {// 200 = "OK"
    	document.getElementById('T2').innerHTML=xmlhttp.responseText;
    }
  else
    {
    alert("Ocorreu o seguinte erro:" + xmlhttp.statusText);
    }
  }
}

E depois tenho:

<body onload="loadXMLDoc('pagina1.php');loadXMLDoc('pagina2.php')">

Se alguém me puder ajudar, ficaria muito grato. Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Usa uma framework de ajax, e lê a documentação referente ao que pretendes :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma framework porquê?

Fica mais simples, e se ele diz que js e ajax não é a àrea dele, fica mais em conta .. Se quisesse aprender como funciona js e ajax, era outra coisa ..

Caso queiras a solução para o teu problema, no fim de cada request, faz reset do objecto xmlhttp .. deve ser por isso que não consegues ..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pessoal, não se esqueçam da finalidade última deste fórum que é a ajuda mútua.

Dizer "usa uma framework" não é propriamente ajudar.

Vamos lá tentar descobrir o problema.

Primeiro e antes de tudo: aparece-te algum erro na consola de erros?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nas funções state_Change e state_Change2 estas a chamar o xmlhttp que não esta a ser passado para a função, aposto que o erro está ai!

tenta fazer isto

xmlhttp.onreadystatechange= function() {state_Change2(xmlhttp) }

e nao te esqueças da declaração da  state_Change e state_Change2 tens que ser  state_Change(xmlhttp) e state_Change2(xmlhttp)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não precisa passar na função Sven, é variavel publica ;)

E pedrotuga, bem sei disso, e já apanhei respostas bem piores por aqui  :eek:

De qualquer modo, não é hábito meu dar respostas destas, peço desculpa  :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É verdade não reparei, mas não pode ser publica!

da segunda chamada a função o valor da primeira desaparece e nunca vai receber o conteudo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Antes demais queria agradecer pelas respostas.

Agora aqui vai, tenho uma carga horária muito preenchida pelo que não tenho tempo para aprender js/ajax.

Depois, framework? Desculpa, mas não faz o meu género, sei que também existem frameworks para php e tudo mais, mas sinceramente nunca usei e se queres que te diga nem faço ideia de como funciona, a única coisa que uso é o dreamweaver cs3 e é la que faço todos os meus códigos php.

E por fim, como para resolver o problema o que fiz foi juntar as duas páginas, assim sendo, só preciso de chamar uma vez a função.

Agora, quero agradecer uma vez mais a todos e

ainda pedir desculpa pela minha ignorância e pela vossa perda de tempo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu compreendo aquilo que o pedrotuga está a dizer mas também sou da opinião da framework, principalmente para AJAX. Simplifica muito as coisas e permite que o programador se abstraia um pouco do browser que o cliente está a usar pois a framework faz todo o trabalho sujo.

@TheGlorious

Eu não sou a melhor pessoa para fazer descrições, mas uma framework é no fundo um conjunto de funções que te facilitam certas tarefas que sem uma framework poderiam tornar-se demasiado repetitivas em cada projecto que venhas a fazer. Pior descrição do ano de alguma coisa, mas talvez te ajude a perceber. E se optares em aprender uma framework, eu recomendo jQuery, mas também é a única que uso/usei, portanto a minha opinião neste assunto é limitada.

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