Autor | Zpráva | ||
---|---|---|---|
fuNes Profil * |
Dobrý deň, potrebujem docieliť to aby sa po kliknutí na odkaz najskôr skript
vytvoril SESSION a až potom aby sa vykonala hlavná akcia (tj samotné presmerovanie odkazu) spravil som to takto: function createRequestObject() { var req; if(window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if(window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } else { alert('Your browser is not IE 5 or higher, or Firefox or Safari or Opera'); } return req; } function run(id, newurl) { var http = createRequestObject(); var url = "create_data.php?id="+encodeURIComponent(id); http.open("GET", url, true); http.onreadystatechange = function() { if(http.readyState == 4 && http.status == 200) { location.replace(newurl); } } http.send(null); } pričom v odkaze som doplnil onclick=run(cislo, this.href); a v súbore create_data.php je <? session_start(); if(isset($_SESSION[cID])) { unset($_SESSION[cID]); } $_SESSION[cID]=$_GET[id]; ?> pokial som skúšal vypisovať alertom, resp. echom tak sa zdalo že to celé funguje, ale SESSION mi nevytvorí, resp. s ňou nemôžem pracovať (chybu to tiež nehlási žiadnu) Neviete mi niekto poradiť kde by mohol byť problém?? Ďakujem za prípadnú radu, nasmerovanie.. |
||
Aichi Profil |
#2 · Zasláno: 12. 8. 2009, 15:45:58
to cID a id v PHP kódu máš definované jako konstanty, nebo tam schválně nedáváš uvozovky?
|
||
fuNes Profil * |
#3 · Zasláno: 12. 8. 2009, 16:07:37
To cid je vpodstate už taký experiment, či to náhodou nepôjde tak. Skúšal som aj jednoduchší výpis:
<? session_start(); $_SESSION['moja_session'] = 'Toto je moja waw SESSION'; ?> Ďakujem za reakciu |
||
Aichi Profil |
#4 · Zasláno: 14. 8. 2009, 11:55:22
máš někde na ukázku ten kód, pokud to stále nefunguje?
|
||
AM_ Profil |
#5 · Zasláno: 14. 8. 2009, 12:12:18 · Upravil/a: AM_
Opravím ten kousek:
<?php // !!! tohle nikdy nevynechávej, nové verze PHP už to ani s výchozím nastavením nespolknou session_start(); //if(isset($_SESSION[cID])) //{ //unset($_SESSION[cID]); //} //ty 4 řádky jsou úplně zbytečné, vždyť _SESSION['cid'] se na další řádce stejně vytvoří znovu $_SESSION['cID']=$_GET['id']; //ach ty uvozovky... ?> v té onreadystatechange funkci si nech httpRequest.responseText, třeba k nějaké chybě dochází v tom AJAXem volaném souboru. Jinak nevidím důvod, aby se session proměnná nevytvořila |
||
fuNes Profil * |
#6 · Zasláno: 14. 8. 2009, 13:18:22
add aichi
stále to nefunguje. Kompletný kód je uvedený tu z výnimkou odkazu. add AM_ je mi jasné že tie riadky sú tam v tejto konštrukcií zbytočné a zároveň je to bez apostrofov chybne. Ako som v druhom príspevku písal toto bol už len experiment. add httpRequest.responseText, pokiaľ čokolvek vypíšem či už v AJAXE alebo PHP, tak to funguje. Jediné čo nejde je práve tá SESSION. Aktuálne som to običiel napriek tomu by ma veľmi zaujímalo prečo to nešlo. Ďakujem za reakcie a pekný piatok prajem :) |
||
AM_ Profil |
#7 · Zasláno: 14. 8. 2009, 13:54:45
pořád si myslím, že se spíš jednalo o nějakou "hloupou" chybu, než že by to technicky nešlo. Já momentálně také dělám aplikaci, kde AJAXem volané skripty přistupují k session hlavního programu, a nemám s tím sebemenší problém. Nejspíš máš problém ještě někde jinde, než v ukázaném kódu (omylem si proměnnou někde přepisuješ, překlep v indexovacím řetězci, špatná inicializace session, nemáš třeba vyplé cookies? ikdyž to asi ne, na to bys přišel rychle)
|
||
fuNes Profil * |
#8 · Zasláno: 14. 8. 2009, 15:32:43
Neviem jedine že by mi to blokovalo hlavné CMSko, jedná sa totiž o to že vytváram objednávkový modul do Joomly (veľmi špecifický)
Pokiaľ som skušal vytvoriť SESSION niekde mimo tak to šlo, len pokiaľ to SESSION robím AJAXom tak to neposlúcha. Ako som už ale písal problém som obišiel a modul je čoskoro pripravený na vypustenie pod GPL licenciou, len si nejak nechcem pripustiť porážku.. |
||
AM_ Profil |
#9 · Zasláno: 14. 8. 2009, 18:50:11
Tak ještě zkus napsat na nějaké fórum zaměřené na Joomly, není vyloučené, že se opravdu CMS o sessiony nějak stará a s tímhle nepočítá. Ale opravdu bych to spíš viděl na chybu z nepozornosti, kolikrát se mi takhle stalo, že mi nefungovaly různé věci, které normálně fungovat měly, a po hodině hledání byl zdrojem chyby třeba jen překlep v nějakém indexu.
|
||
Časová prodleva: 15 let
|
0