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); } } }
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>
Sittenkin toimii, kiitos!
Eipä sittenkään toimi :D
Tarvitsee tuon erillisen stateChange -funktion, joka katsoo miten tila muuttuu.
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); };
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>
Aihe on jo aika vanha, joten et voi enää vastata siihen.