Autor | Zpráva | ||
---|---|---|---|
Quax Profil * |
#1 · Zasláno: 31. 8. 2008, 12:53:07
Nasiel som viacero tem, kde sa toto riesilo, nejak mi nefungovalo nic, co som nasiel, mozno aj preto, ze islo vzdy o fragmenty kodu
Mam subory x_content.js a x_content.php x_content.js var xmlHttp function getXContent(int) { xmlHttp=GetXmlHttpObject(int) if (xmlHttp==null) { alert ("Browser nepodporuje HTTP Request") return } var url="x_content.php" url=url+"?number="+int url=url+"&sid="+Math.random() xmlHttp.onreadystatechange=stateChanged; xmlHttp.open("GET",url,true) xmlHttp.send(null) } function stateChanged() { if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { document.getElementById("x_content"). innerHTML=xmlHttp.responseText; } } function GetXmlHttpObject() { var objXMLHttp=null if (window.XMLHttpRequest) { objXMLHttp=new XMLHttpRequest() } else if (window.ActiveXObject) { objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP") } return objXMLHttp } x_content.php obsahuje viacere php skripty, html a nejake tie javascripty. Tie sa samozrejme nevykonaju. Tak napriklad. Ak by subor obsahoval <script type="text/javascript"> <!-- document.write("BLABLA"); //--> </script> co mam spravit, aby sa skript vykonal? (samozrejme nechcem, aby sa mi vypisalo BLABLA na novu stranku, ale vnutri tagu s ID x_content Co treba doplnit bud do x_content.js, alebo do x_content.php, aby to islo? |
||
peta Profil |
#2 · Zasláno: 31. 8. 2008, 18:58:01
Quax
co hlasi JS konzola za chybu? U ajaxu je zname ze funguje jen a pouze ze serveru. A to bud jako http://localhost/ nebo http://stranka.cz/... Cili pokud to chces testovad bez nainstalovaneho PHP a serveru, tak je treba zrusit || xmlHttp.readyState=="complete" a pak ti to umi Firefo zpracovat Ajax ti vrati bu textovy retezec text/html nebo XML dokument text/xml , cili pokud 'vnutri tagu s ID x_content' tak tam musis mit script, ktery dany element prepisuje a to tento radek innerHTML=xmlHttp.responseText; musis smerovat na nejaky objekt. Samotne innerHTML bez niceho se povazuje za promennou. x = xmlHttp.responseText; y = x; to je uplne to same jako to, co tam mas napsane. Jak se pracuje s dokumentem se dozvis z prikladu zacatecnicke a dokument jakpsatweb - javascript - priklady jakpsatweb - javascript |
||
peta Profil |
#3 · Zasláno: 31. 8. 2008, 19:03:27
<html>
<head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>JS Ajax HttpRequest</title> <script> // --- BEGIN ajax --- var ajax = new Object(); // prenosova funkce pro Mozillu ajax.novyPrenos = null; ajax.poslatGet = null; ajax.poslatPost = null; ajax.prenosStatus = true; ajax.novyPrenosMoz = function(navrat_fce) { var prenos = null; // zjisti, zda je prenosova funkce dostupna try {prenos = new XMLHttpRequest();} catch (e) {prenos = null;} if (prenos!=null) // Jestlize ANO, { prenos.onreadystatechange = function() // pak kontroluj stav prenosu mou funkci { if (prenos.readyState==4) // prenos dokoncen { if (!ajax.prenosStatus || prenos.status==200) // status 200 lze a treba kontrolovat pri prenaseni mezi serverem {if (window[navrat_fce]!=null) {window[navrat_fce](prenos.responseText);}} // jestlize existuje navratova funkce, zavolej ji else {alert("Prenos se nezdaril!\nstav=" + prenos.status + "\nchyba=" + prenos.statusText);} //POST server } } // prenos.onprogress = ajax.prenos.nacitani; // presmeruj udalost prubeh prenosu na funkci nacitani // prenos.onerror = ajax.prenos.chyba; // presmeruj udalost chyba prenosu na funkci chyba } return prenos; } ajax.novyPrenosIEtyp = null; ajax.novyPrenosIE = function(navrat_fce) { var prenos = null; // zjisti, zda je prenosova funkce dostupna try {prenos = new ActiveXObject(ajax.novyPrenosIEtyp);} catch (e) {prenos = null;} if (prenos!=null) // Jestlize ANO, { prenos.onreadystatechange = function() // pak kontroluj stav prenosu mou funkci { if (prenos.readyState==4) { if (prenos.status==200) // status 200 lze a treba kontrolovat pri prenaseni mezi serverem {if (window[navrat_fce]!=null) {window[navrat_fce](prenos.responseText);}} // jestlize existuje navratova funkce, zavolej ji else {alert("Prenos se nezdaril!\nstatus=" + prenos.status + "\nchyba=" + prenos.statusText);} //POST server } } // prenos.onprogress = ajax.prenos.nacitani; // presmeruj udalost prubeh prenosu na funkci nacitani // prenos.onerror = ajax.prenos.chyba; // presmeruj udalost chyba prenosu na funkci chyba } return prenos; } ajax.novyPrenosGet = function(adresa,hodnoty,navrat_fce) { var z = ajax.novyPrenos(navrat_fce); if (hodnoty!=="") // pokud jsou hodnoty, zjisti, zda adresa konci '?' nebo '' a pridej na konec hodnoty {adresa+= ((adresa.indexOf("?")>-1) ? "&" : "?") + hodnoty;} z.open("GET",adresa,true); z.send(null); }; ajax.novyPrenosPost = function(adresa,hodnoty,navrat_fce) { var z = ajax.novyPrenos(navrat_fce); z.open("POST",adresa,true); z.setRequestHeader('Content-type','application/x-www-form-urlencoded' ); z.send(hodnoty); }; // prirad prenosovou funkci do ajax.novyPrenos ajax.init = function() { var prenos = null; // existuje-li XMLHttpRequest, zkus priradit prenos pro mozilu if (window.XMLHttpRequest) //Moz1.5 / IE7 / Op7.6+ / Saf { if (prenos = ajax.novyPrenosMoz(null)) {ajax.novyPrenos = ajax.novyPrenosMoz;} } // existuje-li ActiveXObject, zkus priradit prenos pro explorer else {if (window.ActiveXObject) //IE5.x+ { var i,msX; msX = new Array( // pole s ruznymi nazvy prenosu pro IE, mel by fungovat ten prvni 'Msxml2.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'Msxml2.XMLHTTP.3.0', 'Microsoft.XMLHTTP'); for (i=0;i<msX.length;i++) { ajax.prenosIEtyp = msX[i]; try { prenos = new ajax.prenosIE(null); if (prenos!=null) {ajax.novyPrenos = ajax.novyPrenosIE; break;} // pokud se da prenos pouzit, prerus cyklus } catch (e) {prenos = null;} } }} // prirad odesilani, jestli se da prenosova funkce pouzit if (prenos!=null) { ajax.poslatGet = ajax.novyPrenosGet; ajax.poslatPost = ajax.novyPrenosPost; } // ja tu mam jeste IFRAME, SCRIPT a Java verzi, ale tim vas nebudu zatezovat } ajax.init(); //ajax.poslatGet('http://jakpsatweb','test=1&zkouska=2','alert'); //ajax.poslatPost('http://jakpsatweb','test=1&zkouska=2','alert'); // --- END ajax --- function zobraz(text) { document.getElementById('misto_zobrazeni').innerHTML = text.replace(/[<]/g,'<').replace(/[>]/g,'>'); } </script> </head> <body> <h2>Ajax HttpRequest pomocí nativní funkce</h2> <p>Ajax je způsob, jak přenášet data bez obnovonání celé stránky. Je třeba s ním nakládat opatrně, aby jste nakonec nepřenášeli víc než bez něj.</p> <p>Tato ajaxová metoda funguje dobře ze serveru, s nastaveným kódováním UTF-8 (odkaz začíná http://vasestranka.cz/). Provoz z disku lze vyzkoušet instalací serveru (odkaz pak začíná přes http://localhost/) nebo ve Firefoxu bez kontroly na stav prenosu, <code>prenos.status==200</code> , kterou lze vypnout nastaveni <code>ajax.prenosStatus = false;</code> .</p> <form action="#"> <button onclick="ajax.poslatPost('./ajax.htm','text=ahoj','zobraz')">Odeslat pozadavek</button> </form> <p>Po kliknutí na tlačítko se zobrazí HTML kód tohoto dokumentu pod nadpis <b>Zdrojový kód</b>.</p> <p>Používaný typ dokumentu býva text/html a text/xml a kódování UTF-8. Doporučuji si obě hodnoty pohlídat a nastavit pro váš program, protože server může mít přednastavené obě hodnoty jinak. Totéž pro javascript i externí.</p> <p>Typické nastavení pro PHP:</p> <p class="code"> <code><?php header('Content-type: text/html; charset=utf-8'); ?></code> <br/><code><?php header('Content-type: text/html; charset=windows-1250'); ?></code> <br/><code><?php header('Content-type: text/xml; charset=utf-8'); ?></code> </p> <h3>Zdrojový kód</h3> <pre id="misto_zobrazeni" style="border:1px solid #666;background:#ddd;padding:0.5em;"></pre> <h3>Souvisejici odkazy</h3> <ul> <li><a href="http://www.w3.org/TR/XMLHttpRequest/"> www.w3.org</a> XMLHttpRequest podle W3c</li> <li><a href="http://developer.mozilla.org/en/docs/XMLHttpRequest"> developer.mozilla.org</a> XMLHttpRequest podle Mozilly</li> <li><a href="http://msdn.microsoft.com/en-us/library/ms760305(VS.85).aspx"> msdn.microsoft.com</a> XMLHttpRequest podle MS</li> <li><a href="http://developer.apple.com/internet/webcontent/xmlhttpreq.html"> developer.apple.com</a> XMLHttpRequest podle Apple</li> </ul> </body> </html> |
||
Časová prodleva: 16 let
|
0