Autor | Zpráva | ||
---|---|---|---|
quatzael Profil |
#1 · Zasláno: 29. 5. 2012, 22:15:15
Mám trochu začátečnickej dotaz. Jedná se o klasickej AJAXovej script:
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myel").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","exph.php?q="+phvaluer,true); xmlhttp.send(); všechno běhá jak má, ale potřeboval bych, aby zároveň javascript dostal libovolnou hodnotu proměnné z toho exph.php a mohl jí hned použít v příkazu jako např: window.alert(promennazphp); Snad chápete co myslím. Díky. |
||
1Pupik1989 Profil |
#2 · Zasláno: 29. 5. 2012, 23:09:00
Přečti si něco o JSON.
|
||
quatzael Profil |
#3 · Zasláno: 29. 5. 2012, 23:40:17
Moc z toho moudrej nejsem. Nehledám to nejelegantnější fancy řešení pomocí jquery, ale spíš standartní jednoduchý způsob..
Jinak jednoduše to fakt nejde?? Nikde jsem zatím v tom JSON nenašel řešení na tohle, pořád jen samý pole.. |
||
Rfilip Profil |
Scriptem ezph.php si rucne vypis jmena promenych a prirazeni jejih hodnot dle syntaxe Javascriptu.
Js: vytvor si v hlavice novy script element, jehoz vlastnost innertext = xmlhttp.responstext. Pote jiz muzes php promene uzivat dle libosti. |
||
quatzael Profil |
#5 · Zasláno: 30. 5. 2012, 00:56:45
ale jak ho mám potom odcyhytit? document.getElementById použít nemůžu, protože element <script> nemá id atribut...
|
||
Rfilip Profil |
#6 · Zasláno: 30. 5. 2012, 06:39:46
Vytvor si ho javascriptem pri zpracovani ajaxu. Pokud by takto potreboval hodnoty aktualizovat,promenou ve ktere ho vytvoris si ponech a pak uz men vlastnost innertext…
|
||
quatzael Profil |
#7 · Zasláno: 30. 5. 2012, 09:48:13
asi to nechápu. v HTML mám element <span id="myel"> do toho se mi z php přes ten výše uvedenej javascript vkládají z databáze hodnoty pro select. To je ok. Ale když chci z toho php scriptu zvlášť ještě použít hodnoty proměnný pro účel toho window.alert tak vůbec nevím co tam k tomu javascriptu mám přidat. Všechno echo z php jde přece do toho elementu "myel"..
Prosím o nějaké názornější vysvětlení, tohle dělám fakt poprvé.. |
||
Kajman Profil |
#8 · Zasláno: 30. 5. 2012, 10:18:38
PHP skriptem si vrátíte JSON, kde bude v rámci jednoho objeku (ale zvlášť) text a proměnná.
Např. díky json_encode něco jako { "text": "Text do spanu", "alert": "Text pro alert" } Pak si třeba evalem dáte ten objekt do klasické proměnné v javascriptu a použijete jednotlivé části. var vraceno = eval('(' + xmlhttp.responseText + ')'); document.getElementById("myel").innerHTML=vraceno['text']; window.alert(vraceno['alert']); |
||
1Pupik1989 Profil |
Text do spanu pak můžeš přidat z proměnné, nebo jak jsem psal jsonem. Php script ti vrátí objekt a ty ho akorát protáhneš třeba pomocí eval. Pokud budeš odesílat i s nějakým textem, tak akorát použiješ match na vyhledání objektu. Já s tím také teprve nedávno opět začal.
Edit:// předběhli mě :) |
||
quatzael Profil |
#10 · Zasláno: 30. 5. 2012, 12:26:11
no tak do javasrcriptu jsem zkopčil to Tvoje:
var vraceno = eval('(' + xmlhttp.responseText + ')'); document.getElementById("myel").innerHTML=vraceno['text']; window.alert(vraceno['alert']); a do php jsem dal: $vraceno = array(); $vraceno['text'] = '<h1>TEXT</h1>'; $vraceno['alert'] = 'ALERT'; echo json_encode($vraceno); ale nefunguje to.. nerozumím jak funguje ten json_encode... to se ani nedá nikde dohledat v knížkách a manuálech.. |
||
quatzael Profil |
#11 · Zasláno: 30. 5. 2012, 13:40:28
teď jsem ještě zkusil do toho php dát přímo:
var $text = '<h1>TEXT</h1>'; var $alert = 'ALERT'; a echo "{\"text\":" . $text . ", \"alert\":" . $alert . "}"; nebo echo "{\"text\": \"" . $text . "\", \"alert\": \"" . $alert . \""}"; a ani jedno nefunguje...:-( |
||
Kajman Profil |
#12 · Zasláno: 30. 5. 2012, 14:25:08
quatzael:
„ale nefunguje to“ A jak to nefunguje? Je něco v chybové konzoli? Co přesně vrátí ten php skript? Teď jsem to zkoušel, a mně to funguje. Jinak hodně prohlížečů má po stisku F12 nástroje, kde si můžete sledovat síťovou komunikaci včetně obsahu atp. |
||
quatzael Profil |
mě to při tom ladění furt háže hlášku, že je u toho
var vraceno = eval('(' + xmlhttp.responseText + ')'); špatná syntaxe.
to je asi tím, že už z toho php to jde do toho špatně.. mám tam: var $text = '<h1>TEXT</h1>'; var $alert = 'ALERT'; echo "{\"text\":" . $text . ", \"alert\":" . $alert . "}"; |
||
Chamurappi Profil |
#14 · Zasláno: 30. 5. 2012, 15:15:25
Reaguji na quatzaela:
„furt háže hlášku … špatná syntaxe“ Protože to, co vracíš (klidně se na to normálně podívej přes prohlížeč), není platný JavaScript. |
||
quatzael Profil |
#15 · Zasláno: 30. 5. 2012, 15:19:28 · Upravil/a: quatzael
a kde je teda chyba?? dávám tam jen věci co mi tady poradili..
Reaguji na Chamurappiho: co mám udělat, aby ten javascript začal být platný..?? |
||
Chamurappi Profil |
#16 · Zasláno: 30. 5. 2012, 15:26:50
Reaguji na quatzaela:
Najít chybu a opravit chybu. Syntaktické chyby patří mezi ty nejjednodušší. Pokud nedokážeš rozpoznat, jestli řetězec psát do uvozovek, nebo jestli ti někde nepřebývá závorka, tak máš smůlu. |
||
peta Profil |
quatzael:
"co mi tady poradili" Tim bych se moc nechlubil. Najit chybu je zaklad. Resit kazdou chybu a dotaz pres forum, to kdyby delal kazdy, tak je tu stovka dotazu za minutu. Syntaxe se dobre zjistuje v programu, ktery obarvuje kod. Treba pspad? Toto forum tez obarvuje kod. <script> var vraceno = eval('(' + xmlhttp.responseText + ')'); </script> var $text = '<h1>TEXT</h1>'; var $alert = 'ALERT'; echo "{\"text\":" . $text . ", \"alert\":" . $alert . "}"; {"text":<h1>TEXT</h1> ,"alert":ALERT}; <script> var vraceno = {"text":<h1>TEXT</h1> ,"alert":ALERT}; </script> --- Chamurappi - dik, mezi tim jsem doplnil prispevek :) |
||
Chamurappi Profil |
#18 · Zasláno: 30. 5. 2012, 15:36:43
Reaguji na peta:
„spis nekde v kodu nad tim“ Ne, chyba je v tom, co stahuje. |
||
1Pupik1989 Profil |
Psát string jako interger asi nepůjde.
|
||
quatzael Profil |
#20 · Zasláno: 30. 5. 2012, 16:54:48
Echo jsem opravil na:
$text = "<span>TEXT</span>"; $alert = "ALERT"; echo "<p>{\"text\": \"" . $text . "\", \"alert\": \"" . $alert . "\"}</p>"; A javascript jsem upravil na: var vraceno = eval('(' + xmlhttp.responseText + ')'); document.getElementById("myel").innerHTML=vraceno.text; window.alert(vraceno.alert); Ale to var vraceno = eval('(' + xmlhttp.responseText + ')'); je furt špatně.. potřebuju, aby proměnná vraceno získala z php echo přesně v podobě v jaký ho to php posílá, tedy: {"text" : "<span>Text</span>" , "alert" : "Alert" } Může plís někdo ochotnej poradit..?? |
||
Kajman Profil |
#21 · Zasláno: 30. 5. 2012, 17:20:04
quatzael:
„Echo jsem opravil“ Proč tam proboha cpete to <p>? Zkontrolujte si, co přesně Vám vrací ten php skript, třeba na http://jsonlint.com/ a opravte si to. Případně sem pošlete odkaz na ten php, když to nezvládnete zkontrolovat sám. |
||
quatzael Profil |
#22 · Zasláno: 30. 5. 2012, 21:49:14
to <p> jsem tam přenesl nedopatřením, když jsem to testoval v jiným dokumentu.. Dal jsem to pryč a už to funguje!!
Díky moc!!! |
||
Časová prodleva: 11 let
|
0