Autor | Zpráva | ||
---|---|---|---|
majo80 Profil * |
#1 · Zasláno: 4. 4. 2012, 11:45:56
Chcel by som načítať do DIVu externý php súbor ale nechcem využiť jquery. Potreboval by som poradiť ako to urobiť (pravdepodobne nejaká funkcia AJAXu).
Príklad: <div id="semvloz"></div> a do tohoto divu potrebujem načítať súbor: subor.php Ďakujem |
||
_es Profil |
#2 · Zasláno: 4. 4. 2012, 11:48:40
|
||
Chamurappi Profil |
#3 · Zasláno: 4. 4. 2012, 14:36:26
Reaguji na maja80:
Nebo moje univerzální funkce: function nacti(url, callback) { var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); xhr.open("GET", url, true); xhr.onreadystatechange = function() { if(xhr.readyState == 4) callback(xhr.responseText); }; xhr.send(""); } nacti("subor.php", function(data) { document.getElementById("semvloz").innerHTML = data; }) |
||
peta Profil |
#4 · Zasláno: 4. 4. 2012, 15:21:32
Chamurappi: Nebylo by lepsi otevirat request pres POST? GET ma omezenou delku prenasenych dat, ne?
|
||
_es Profil |
#5 · Zasláno: 4. 4. 2012, 15:35:34
peta:
„GET ma omezenou delku prenasenych dat, ne?“ Prenášaných odkiaľ kam? Od servera ku klientovi nič obmedzené nie je. |
||
majo80 Profil * |
#6 · Zasláno: 4. 4. 2012, 16:21:59
Ďakujem za rady, pomohlo to. Len sa mi vyskytol nový problém. Pri volaní jednej funkcie najskôr odosielam nejaké dáta na spracovanie do súboru napr. spracuj.php a v druhom kroku hneď po tomto odoslaní ich pomocou vyššie uvedeného načítavam do DIVu.
A tu je chyba: pomocou jednej funkcie odošlem položku tovaru do DB - zapíše sa správne. Ale ak ihneď načítam do DIVu stránku, ktorá zabezpečuje výpis z DB tak sa tam tovar ktorý som práve odoslal ešte nezobrazí. Až po ďalšom vložení tovaru sa v dive zobrazí ten skôr vložený ale opäť nie ten ktorý som práve vkladal,...atď. Snáď som to vysvetlil zrozumiteľne... |
||
Ugo Profil |
#7 · Zasláno: 4. 4. 2012, 16:48:52
to (jestli chápu správně) mi připadá na prohození v php scriptu kde nejprve vybíráš data a pak ukládáš
|
||
majo80 Profil * |
#8 · Zasláno: 4. 4. 2012, 17:12:25
Aj ja som si to myslel ale nie je to tak. Tu je ten javascript kód, ktorý zabezpečuje v prvom kroku odoslanie do súboru na spracovanie a uloženie do DB a druhá časť načítanie iného php súboru, ktorý sa zobrazí v DIVe:
function request( prodId, prodCena, prodKs ){ //vytvoreni nove promenne var request = null; //gecko if( window.XMLHttpRequest ){ request = new XMLHttpRequest() } else if ( window.ActiveXObject ){ //IE request = new ActiveXObject("Microsoft.XMLHTTP"); } //pokud se neporadilo vytvorit if (!request) { alert('Váš prehliadač nepodporuje ajax.'); return false; } request.open("GET", "dokosika.php?idpolozky=" + prodId + "&pocet=" + prodKs + "&cena=" + prodCena, true); request.send( null ); if (window.ActiveXObject) { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } else { httpRequest = new XMLHttpRequest(); } httpRequest.open("GET", "/inc/cart.php", true); httpRequest.onreadystatechange= function () { document.getElementById("cart").innerHTML = httpRequest.responseText; } ; httpRequest.send(null); } |
||
_es Profil |
majo80:
Základom je si najprv logiku aplikácie poriadne rozmyslieť a nie divoko vkladať kódy bez rozmyslenia si toho, čo sa v akom čase vykoná. „Ale ak ihneď načítam do DIVu stránku, ktorá zabezpečuje výpis z DB tak sa tam tovar ktorý som práve odoslal ešte nezobrazí.“ „druhá časť načítanie iného php súboru, ktorý sa zobrazí v DIVe“ No však samozrejme, najprv musí prejsť uloženie do databázy a to nejaký čas trvá. Okrem toho na uvedenú vec netreba dva PHP skripty. |
||
majo80 Profil * |
#10 · Zasláno: 4. 4. 2012, 17:54:43
A je možné nejakým spôsobom oddialiť vykonanie toho druhého scriptu na zobrazenie dát z DB? Napr. po jednej sekunde? Pozastavenie funkciou sleep() nefunguje - pozastaví sa všetko a potom všetko pokračuje s rovnakým výsledkom.
|
||
Fisir Profil |
#11 · Zasláno: 4. 4. 2012, 17:56:02
Reaguji na maja80 [#10]:
Můžeš např. pomocí JSONu zjisti, zda už se daná operace provedla a potom zahájit druhou. |
||
_es Profil |
#12 · Zasláno: 4. 4. 2012, 17:58:14
majo80:
„A je možné nejakým spôsobom oddialiť vykonanie toho druhého scriptu na zobrazenie dát z DB?“ Najlepšie je na uvedený účel použiť len jeden PHP skript. |
||
majo80 Profil * |
#13 · Zasláno: 4. 4. 2012, 18:12:11
Fisir:
S JSON som ešte vôbec nepracoval, môžeš prosím poradiť ako na to? Niečo som čítal na internete ale zatiaľ nechápem ako by som ho mohol využiť v mojom prípade. _es: Niečo ako odoslať dáta a tým istým scriptom ich aj vypísať? To som robil cez JQUERY cez samotný ajax neviem ako na to. |
||
Fisir Profil |
Reaguji na maja80 [#13]:
„môžeš prosím poradiť ako na to?“ Jednoduše: JavaScript$.getJSON('tvujscript.php', function(ret) { if(ret.result == "1"){ /* Jo, provedeno */ } else { /* Ne, neprovedeno */ }; }); PHP$ret = array(); if(/* Podminka, jestli je hotovo */){ $ret['result'] = '1'; } else { $ret['result'] = '0'; }; $return = json_encode($ret); echo $return; exit; |
||
_es Profil |
majo80:
„Niečo ako odoslať dáta a tým istým scriptom ich aj vypísať? To som robil cez JQUERY cez samotný ajax neviem ako na to.“ No veď to je predsa základný princíp HTTP komunikácie HTTP protokol, či konkrétnejšie AJAXu, čo je vlastne len používanie objektu XMLHttpRequest, na odoslanie menej dát z prehliadača metóda GET, pre viac dát z prehliadača metóda POST . Asi by si si mal toho naštudovať oveľa viac, než začneš robiť niečo ako e-shop. Fisir: „K JavaScriptové části potřebuješ jQuery.“ Nepotrebuje, stačí mu upraviť si hore spomenuté funkcie. Okrem toho priamo písal, že jQuery nechce. |
||
Časová prodleva: 11 let
|
0