| 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: 17 let
|
|||
0