Autor | Zpráva | ||
---|---|---|---|
Pinqui Profil |
#1 · Zasláno: 14. 5. 2009, 19:05:22
Dobrý den chtěl bych se zeptat, jak vložit soubor, který vytáhnu pomocí scriptu:
<script type="text/javascript"> var vystup = document.getElementById('vystup'); function stahniData(akce) { // odmazeme stary skript, pokud existoval var hlavicka = document.getElementsByTagName('head')[0]; var dataLoader = document.getElementById('scriptLoader'); if(dataLoader) hlavicka.removeChild(dataLoader); // vytvorime novy element script script = document.createElement('script'); script.id = 'scriptLoader'; script.src = 'javascript-rpc.php?akce='+akce+'&r='+Math.random(); // POZOR, DULEZITE!! Skript musime vlozit do stranky // pomoci DOM - appendChild() // Ihned po vlozeni prohlizec stahne skript a spusti jej x = document.getElementsByTagName('head')[0]; x.appendChild(script); return false; } function vypisText(txt) { // nejsnazsi cesta, vlozime novy kod ke staremu na konec vystup.innerHTML += txt; } function chyba(txt) { // obycejny alert s hlaskou alert(txt); return true; } function vymazData() { // v jednoduchem cyklu smazeme vsechny elementy v prvku vystup while(vystup.hasChildNodes()) vystup.removeChild(vystup.childNodes[0]); return false; } </script> ktery jsem nasel na chose.cz například do frame jmenem window, abych to mohl mít na jedné stránce ten script. Děkuji <frameset cols="*,210" id="frameset1" border="0"> <frameset rows="35,*,15,35" id="frameset2"> <frame name="1" src="" marginheight="4" marginwidth="10"scrolling="no"> <frame name="window" src="" scrolling="auto"> <frame name="3" src="" scrolling="no" border="0" marginwidth="5" marginheight="1" frameborder="0"> <frame name="4" src="" marginheight="4" scrolling="no"> </frameset> <frameset rows="35,*,50,35" id="frameset3"> <frame name="5" src="" marginheight="4" scrolling="no"> <frame name="6" src="" border="0"> <frame name="7" src="" scrolling="no"> <frame name="8" src="" scrolling="no"> </frameset> </frameset> |
||
peta Profil |
#2 · Zasláno: 15. 5. 2009, 11:28:51
window je zakladni objekt, alert(txt) je spravne zapsany jako window.alert(txt);
jakpsatweb.cz - javascript - objekt window jakpsatweb.cz - javascript - priklady - prace s okny Prostuduj |
||
Pinqui Profil |
#3 · Zasláno: 15. 5. 2009, 16:06:09 · Upravil/a: Pinqui
já vím jak funguje ten script, ale ve frame window mám javascriptem napsane
<html> <body> <div id="vystup"></div> </body> </html> ale nejde mi ta načítaná stránka vypsat v tom elementu vystup |
||
Pinqui Profil |
#4 · Zasláno: 16. 5. 2009, 08:28:49 · Upravil/a: Pinqui
Teď mám stavbu takto, ale prostě se mi to v tom frame neukáže:
data.php: <?php print "<html>\n"; print "<head>"; ?> <script type="text/javascript"> /* <![CDATA[ */ var vystup = document.getElementById('vystup'); function stahniData(akce) { // odmazeme stary skript, pokud existoval var hlavicka = document.getElementsByTagName('head')[0]; var dataLoader = document.getElementById('scriptLoader'); if(dataLoader) hlavicka.removeChild(dataLoader); // vytvorime novy element script var script = document.createElement('script'); script.id = 'scriptLoader'; script.src = 'javascript-rpc.php?akce='+akce+'&r='+Math.random(); // POZOR, DULEZITE!! Skript musime vlozit do stranky pomoci DOM - appendChild() // Ihned po vlozeni prohlizec stahne skript a spusti jej var x = document.getElementsByTagName('head')[0]; x.appendChild(script); return false; } function vypisText(txt) { // nejsnazsi cesta, vlozime novy kod ke staremu na konec vystup.innerHTML += txt; } function chyba(txt) { // obycejny alert s hlaskou alert(txt); return true; } function vymazData() { // v jednoduchem cyklu smazeme vsechny elementy v prvku vystup while(vystup.hasChildNodes()) vystup.removeChild(vystup.childNodes[0]); return false; } stahniData('dolly'); /* ]]> */ </script> <?php print "</head>"; print "<div id=\"vystup\"></div>"; print "<frameset cols=\"*,210\" id=\"frameSet1\" border=\"0\">\n"; print " <frameset rows=\"20,*,53\" id=\"frameSet2\">\n"; print " <frame name=\"info\" src=\"\" scrolling=\"no\">\n"; print " <frame name=\"read\" src=\"\" scrolling=\"no\">\n"; print " <frame name=\"write\" src=\"data.php\" scrolling=\"no\">\n"; print " </frameset>\n"; print " <frameset rows=\"21,*,54\" id=\"frameSet3\">\n"; print " <frame name=\"top\" src=\"\" scrolling=\"no\">\n"; print " <frame name=\"menu\" src=\"\" border=\"0\">\n"; print " <frame name=\"smile\" src=\"\" scrolling=\"no\">\n"; print " </frameset>\n"; print "</frameset>\n"; print "</html>\n"; ?> javascript-rpc.php: <?php if (isset($_GET['akce'])) { $akce = $_GET['akce']; switch ($akce) { case "dolly": echo dolly(); break; default: echo "chyba('Byla zavolána neplatná metoda!');"; break; } } function dolly() { $vybrano = "ahoj"; return "vypisText('<p><strong>".date("d.m.Y H:i:s")."</strong>: ".addslashes($vybrano)."</p>')"; } ?> když to skusím bez frame tak to jde ale nemohu to dostat do toho divu ve frame.. píše mi to chybu: vystup is null [Break on this error] vystup.innerHTML += txt; a nevím, jak to udělat aby se mi to vložilo do toho frame read do divu vystup Prosím o radu děkuji |
||
Časová prodleva: 3 dny
|
|||
peta Profil |
#5 · Zasláno: 19. 5. 2009, 15:48:12
Ze by pokus o odkaz na stranku? Odkaz by byl lepsi :)
Chyba je zde: print "<head>"; ?> <script type="text/javascript"> /* <![CDATA[ */ var vystup = document.getElementById('vystup'); // tady ti musi JS konzola hlasit, ze objekt s ID = vystup neexistuje, protoze tento script muzes zavolat jen a pouze kdyz existuje BODY a DIV. S odkazem na stranku jsem ti to mohl rici hned, staci si v jakemkoliv prohlizeci otevrit JS konzolu, krome IE. Kde to samozrejme bude chodit :) Pokud neexistuje objekt, tato akce je neplatna vystup.innerHTML += txt; Co s tim? 1. var vystup = document.getElementById('vystup'); na var vystup = null; 2. var hlavicka = document.getElementsByTagName('head')[0]; na vystup = document.getElementById('vystup'); var hlavicka = document.getElementsByTagName('head')[0]; Treba, nebo jinak, primo to dat do te funkce document.getElementById('vystup').innerHTML += txt; |
||
Pinqui Profil |
#6 · Zasláno: 20. 5. 2009, 18:47:56 · Upravil/a: Pinqui
Mno pořád mi to háže null viz:
http://superpokec.cz/test/ // vyřešeno už jsem přišel na to, kde dělám chybu :-) |
||
Pinqui Profil |
#7 · Zasláno: 21. 5. 2009, 15:38:38
Ještě bych se chtěl zeptat, když upravím:
script.src = 'javascript-rpc.php?akce='+akce+'&r='+Math.random(); na script.src = 'javascript-rpc.php?akce='+akce+'&id='+id+'&r='+Math.random(); přičemž nadefinuje na začátku že id je $_GET['id'] a javascript-rpc.php bude vypadat nějak takto: <?php if (isset($_GET['akce'])) { switch ($_GET['akce']) { case "dolly": echo dolly($_GET['id']); break; default: echo "chyba('Byla zavolána neplatná metoda!');"; break; } } function dolly($id) { if($id != 0){ $query = $db->query("select * from texty where id > '$id'"); while($sel = $query->fetch_assoc()){ return "vypisText('<p><strong>".date("d.m.Y H:i:s")."</strong>: ".addslashes($sel['text'])."</p>')"; } }else{ $query = $db->query("select * from texty order by id DESC limit 25"); while($sel = $query->fetch_assoc()){ return "vypisText('<p><strong>".date("d.m.Y H:i:s")."</strong>: ".addslashes($sel['text'])."</p>')"; } } } ?> Nevím zda by to fungovalo jen to zkouším s js nemám zkušenosti teda ne moc tak se ptám. Tak jestli se: 1) dá nějak pracovat s tím id? aby při prvním výběru kdy bude nulové to $_GET['id'] to vybralo posledních 25 přízpěvků s tím že to do toho get přidalo už id posledního přízpěvku 2) jestli se dá nějak zjistit kolik řádků: (txt, += txt) to vypsalo a třeba po 25 se poslední mazal, aby se nedělal nekonečný strom adresu $_GET, která je předána javascriptem není vidět a to je výhodou, nicméně s tím neumím pracovat tak bych se rád optal skušenějších. Ocením i stránky, kde by se o podobných věcech zmiňovali, hledal jsem dost, ale nenašel jsem to co potřebuji. Předem děkuji |
||
Časová prodleva: 3 dny
|
|||
Pinqui Profil |
#8 · Zasláno: 24. 5. 2009, 09:11:35
Tak s tím id vyřešeno přez session, ale bohužel jsem se dostal k tomu, že nevím jak udělat aby mi to z té mysql vypsalo ty data. jak mám vrátit výsledek těch dat v řádcích aby co řádek z mysql to řádek na obrazovce..
chybu dělám asi někde u :return "vypisText('<p><strong>".date("d.m.Y H:i:s")."</strong>: ".addslashes($sel['text'])."</p>')"; prosím poraďte |
||
Časová prodleva: 5 dní
|
|||
peta Profil |
#9 · Zasláno: 29. 5. 2009, 11:36:05
JS forum, JS pracuje u klienta, ten ma HTML, CSS, JS. Proc sem do fora davas PHP kod, ktery pracuje na serveru? Kolik lidi znalych HTML, CSS, JS ovlada PHP? Nelogicke.
Tohle mam v jednom programu PHP/Oracle $SQL_query['osoba'] = " SELECT * FROM osoby WHERE osobidno = 'AAA' "; $query = $SQL_query['osoba']; $query = str_replace('AAA',$stud_id,$query); $vysl = fce_sq($query); // uvnitr mysql_query, mysql_error a dalsi pomucky pro zjisteni chyby echo '<pre>'; print_r($vysl); // vypsani jinak $t = ''; foreach($vysl as $key=>$value) { $t.= "\n"; foreach($value as $key1=>$value1) {$t.= $value1.',';} } echo $t; Vypada to obtizne? Ve tem pripade privni cyklus bude neco jako while($sel = $query->fetch_assoc()) coz ti do $sel ulozi jeden radek tabulky. Ty mas v tom cyklu return, takze to okamzite ukonci funkci. Asi te vic nez prvni radek nezajima. |
||
Časová prodleva: 15 let
|
0