Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Ajax XMLHTTPRequest -ongelma

Olli [20.02.2009 17:08:10]

#

No, aloinpa harjoitella Ajaxin XMLHTTPRequest-tekniikkaa ja kopioin W3Schoolista koodin, ja muokkailin sitä vähän. Tein funktion, jolle annetaan parametreiksi elementin id, johon haettu sisältö tallennetaan ja tiedosto josta sisältö haetaan. Kuitenkaan skripti ei toimi. Osaatteko sanoa, mikä on ongelma?

var xmlhttp = "";

function lataa(url, divi){
xmlhttp = "null";
 if (window.XMLHttpRequest){
 xmlhttp=new XMLHttpRequest();
 }

 if (window.ActiveXObject){
 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }

 if (xmlhttp !== "null"){
 xmlhttp.onreadystatechange=state_Change(divi);
 xmlhttp.open("GET",url,true);
 xmlhttp.send(null);
 } else {
 alert("Pahoittelemme, mutta selaimesi ei valitettavasti tue käyttämäämme XMLHTTP-tekniikkaa. Päivitäthän selaimesi uusimpaan versioon.");
 }
}

function state_Change(id){
 if (xmlhttp.readyState==4){
  if (xmlhttp.status==200){
  document.getElementById(id).innerHTML=xmlhttp.responseText;
  alert('DATA');
  alert(xmlhttp.responseText);
  } else {
  alert("Tietoja haettaessa tapahtui virhe:" + xmlhttp.statusText);
  }
 }
}

neau33 [20.02.2009 20:01:05]

#

Heippa Olli!

ajax-purkkaa...

<html><head><script language="JavaScript">
var xmlhttp;

function lataa(url, divi){

 if (window.ActiveXObject)
 {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 }
 else if (window.XMLHttpRequest)
 {
   xmlhttp = new XMLHttpRequest();
 }
 else
 {
   alert("Aaargh!!!"); return;
 }
 xmlhttp.open("GET", url);
 xmlhttp.send(url);
 try
 {
   document.getElementById(divi).innerHTML = xmlhttp.responseText;
 }
 catch(err)
 {
   alert("Ääääh!!!");
 }
}
</script></head><body><form id="formi">
<input type="button" value="nappi" onclick="lataa('test.txt','xdiv');"/>
<div id="xdiv"></div></form></body></html>

Olli [21.02.2009 12:59:30]

#

Sittenkin toimii, kiitos!

Olli [23.02.2009 09:11:14]

#

Eipä sittenkään toimi :D

Tarvitsee tuon erillisen stateChange -funktion, joka katsoo miten tila muuttuu.

Metabolix [23.02.2009 10:08:15]

#

Olli kirjoitti:

xmlhttp.onreadystatechange=state_Change(divi);

Tuossa kohti suoritat jo funktion ja sijoitat vain sen palautusarvon. Pääset ehkä haluamaasi lopputulokseen sijoittamalla sen sijaan funktion, joka tekee tuon kutsun:

xmlhttp.onreadystatechange = function() {
  state_Change(divi);
};

neau33 [23.02.2009 15:37:56]

#

Heippa taas Olli!

kuka sinulle kertoi moisia 'stateChange' satuja..?

<html><head><script type="text/javascript">
var xmlhttp;
function lataa(url, div){
  if (window.ActiveXObject)
  {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  else if (window.XMLHttpRequest)
  {
    xmlhttp = new XMLHttpRequest();
  }
  else
  {
    alert("Aaarrrgh!!!"); return;
  }
  //tuhon kohtaan false & runat where ever you want niin toimii!!!
  xmlhttp.open("GET", url, false);
  xmlhttp.send(url);
  try{
    document.getElementById(div).innerHTML = xmlhttp.responseText;
  }
  catch(e)
  {
    alert("Ääyyyyyh!");
  }
  xmlhttp = null;
}
</script></head><body><form id="formi">
<input type="button" value="nappi"
onclick="lataa('test.txt','divi');"/>
<div id="divi"></div></form></body></html>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta