Autor | Zpráva | ||
---|---|---|---|
zis Profil * |
#1 · Zasláno: 22. 12. 2008, 19:39:57
caute
mam jeden problemek. Nacitam do nejakeho divu dynamicky obsah pomoci ajaxu, nejak takto. document.getElementById(element_id).innerHTML = httpRequest.responseText; v FF a podobnych je to v poradku, v IE 7, 6 to nefunguje. Co sem se tak koukal, tak sem videl alternativy s appendChild, to ale pouze pridava textovy element. pomoci toho sem to delal takto var el = document.getElementById(element_id); var text = document.createTextNode(httpRequest.responseText); el.removeChild(el.lastChild); el.appendChild(text); coz uz vypada ze by mohlo fungovat ale podle me v promenne text je pouze text/plain resp. kdyz zde posilam html tak se treba znaky < > vyescapuji za <, > a vypise se pouze jako text. Nemate nejaky napad jak na to? |
||
Měsíček Profil |
#2 · Zasláno: 22. 12. 2008, 19:45:51
Odkdy nefunguje v IE innerHTML? Prosil bych živou ukázku.
|
||
zis Profil * |
#3 · Zasláno: 22. 12. 2008, 19:55:57
no nazivo to ted nebezi ale jak sem psal kdyz sem pouzil nasledujici kod
document.getElementById(element_id).innerHTML = httpRequest.responseText; tak to v ie nefungovalo, ale kdyz sem si alertnul httpRequest.responseText, tak i v IE to vypsalo ten spravnej text, ale pomoci innerHTML uz to nevlozilo. |
||
bohyn Profil |
#4 · Zasláno: 22. 12. 2008, 19:57:33
zis
appendChild() je sice uzitecna funkce, ale pokud to nechces delat pro kazdy element zvlast, tak se vrat zpatky k innerHTML - funguje. |
||
zis Profil * |
#5 · Zasláno: 22. 12. 2008, 20:14:15
mno jak na to koukám tak delsi text to nezvlada, kdyz vypisu treba ahoj tak je to v poradku, pokud mu poslu delsi html tak neudela nic
|
||
Měsíček Profil |
#6 · Zasláno: 22. 12. 2008, 20:36:24
IMHO zase vedle .. na délce textu to záležet nebude. Zkus to hodit na net, ať se na to můžeme kouknout.
|
||
zis Profil * |
#7 · Zasláno: 22. 12. 2008, 20:40:21
aha tak problem bude asi jinde, ale vubec to nechapu
zezacatku vypisu na strance data, pak je po nejakym intervalu preloadnu pomoci ajaxu co se ale nestane, i kdyz ve scriptu, kterej se vola v metode open objektu httpRequest, smazu veskerej obsah v ie to porad funguje a vypisuje stara data!!?? znamena to ze kdyz tam neco pridam noveho tak po refreshy se mi stejne nactou stare hodnoty, jakoby se nejak nakesovali. nevite co s tim? vubec to nechapu |
||
Měsíček Profil |
#8 · Zasláno: 22. 12. 2008, 20:44:54
Něco děláš špatně, ale co přesně to ti málo kdo poví (jestli kolegům funguje křišťálová koule - nevím).
|
||
zis Profil * |
#9 · Zasláno: 22. 12. 2008, 20:48:51
no kod v javascriptu je tento
preloadData(); function preloadData() { setInterval("refreshData()", sek); // načasuje opakovanou akci } function createRequest() { if (window.ActiveXObject) httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); else httpRequest = new XMLHttpRequest(); return httpRequest; } function refreshData() { preloadLineUpHome(); preloadLineUpAway(); preloadReporting(); preloadMatchStatus(); //preloadTitleMatch(); preloadGoals(); } function preloadReporting() { h1 = createRequest(); getData(h1,"/online/getreport.php?id=" + id,"online_reportage"); } function preloadLineUpHome() { h2 = createRequest(); getData(h2,"/online/getlineuphome.php?id=" + id,"online_lineup_home"); } function preloadLineUpAway() { h3 = createRequest(); getData(h3,"/online/getlineupaway.php?id=" + id,"online_lineup_away"); } function preloadMatchStatus() { h4 = createRequest(); getData(h4,"/online/getmatchstatus.php?id=" + id,"online_status"); } /*function preloadTitleMatch() { h5 = createRequest(); getData(h5,"/online/gettitlematch.php?id=" + id,"online_pg_title"); }*/ function preloadGoals() { h6 = createRequest(); getData(h6,"/online/getgoals.php?id=" + id,"online_goals"); } function getData(httpRequest, url, element_id) { httpRequest.open("GET", url, true); httpRequest.setRequestHeader("Accept-Charset","UTF-8"); httpRequest.onreadystatechange= function () {processRequest(httpRequest,element_id); } ; httpRequest.send(null); } function escapeHTML(someText) { var div = document.createElement('div'); var text = document.createTextNode(someText); div.appendChild(text); return div.innerHTML; } function processRequest(httpRequest, element_id) { if (httpRequest.readyState == 4) { if(httpRequest.status == 200) { //var el = document.getElementById(element_id); //var div = document.CreateElement(""); //alert(el.id); //var text = document.createTextNode("<table>ahoj</table>"); //el.removeChild(el.lastChild); //alert(el.lastChild.name); //el.appendChild(text); var text = httpRequest.responseText; //alert(text); document.getElementById(element_id).innerHTML = text; } else { alert("Chyba pri nacitani stanky "+ httpRequest.status +" : "+ httpRequest.statusText); } } } v phpku jsou jen metody, ktery provedou nejakej dotaz a echnou data |
||
bohyn Profil |
#10 · Zasláno: 23. 12. 2008, 00:33:09
zis
Zkus pouzivat min pozadavku, zjisti si neco treba o JSON a redukuj tech 6 pozadavku do jednoho. Je mozne ze se ti navzajem potlucou. V PHP zakaz cache pred HTTP hlavicky. |
||
zis Profil * |
#11 · Zasláno: 23. 12. 2008, 12:03:50
jo díky bohyn, problem byl s cache. Prdnul sem tam
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" ); header("Cache-Control: no-cache, must-revalidate" ); header("Pragma: no-cache" ); a vse facha jak ma. Jinak diky za typ o JSON, nic moc o tom nevim ale co sem si ted cet, vypada to slusne. Ted uz jen aby byl na to cas :-). |
||
Časová prodleva: 15 let
|
0