Portál AbcLinuxu, 20. dubna 2024 02:59


Dotaz: Ajax onreadystatechange

12.1.2011 22:40 Michal
Ajax onreadystatechange
Přečteno: 379×
Odpovědět | Admin
Příloha:
Ahoj,

mám problém s technologií AJAX - teprve se ji učím používat. Balík v příloze obsahuje 3 soubory:

ajax.js - javascriptový kód

index.html - formulář

zkontrolujEmail.php - skript který zkontroluje správnost E-mailu

Problém je v tom, že to nic nedělá, ačkoliv by mělo. Podle kontrolních výpisů program nikdy nevstoupí do anonymní funkce přiřazené k XMLHttpRequestObject.onreadystatechange.

Poradíte mi prosím čím to je a jak to napravit?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.1.2011 12:12 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Ajax onreadystatechange
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nemá být jako parametr open() celá adresa, včetně protokolu a serveru? Nekončí vám náhodou volání send() chybou? Taky mi nepřipadá užitečné psát to znova, když na to existuje spousta knihoven, které vás odstíní od specifik jednotlivých prohlížečů.
13.1.2011 13:43 Michal
Rozbalit Rozbalit vše Re: Ajax onreadystatechange
Send končí chybou (vraci false). Jak to? PHP skript chyby neobsahuje.

v open snad nemusí být celá adresa. Ten skript se podle všeho spustí.

Vím, že vynalézám kolo, ale bohužel nemám čas se učit další framework (leda že by byl opravdu jednoduchý), tak jsem si myslel, že takhle to budu mít rychleji.
13.1.2011 13:49 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Ajax onreadystatechange
Řekl bych, že skončí chybou právě proto, že v tom open() není správná adresa. Vy tam máte relativní adresu, ale relativní k čemu by měla být?
13.1.2011 14:00 Michal
Rozbalit Rozbalit vše Re: Ajax onreadystatechange
Když tam zadám místo relativní adresy "http://localhost/ajax_pok/zpracujEmail.php" tak také skončí chybou. Tím že by měla být relativní jsem myslel, že jí to bude brát relativně vzhledem k místu, odkud se spustil skript. Čili v tom samém místě vlastně. Nebo to tak nefunguje?
13.1.2011 15:13 chrono
Rozbalit Rozbalit vše Re: Ajax onreadystatechange
Odpovědět | | Sbalit | Link | Blokovat | Admin
Akýkoľvek prehliadač s javascript konzolou (alebo niečím podobným), určite vypíše chybu, že null nemá atribút value.Z riadku, pri ktorom to píše je zrejmé, že ide o premennú input a problém teda je v tom, že v tom html súbore nie je element, ktorý by mal id="email". Je tam jeden s name="email", ale funkcia getElementById hľadá konkrétne id (čo je zrejmé aj z názvu tej funkcie).

PS: Tá adresa v open môže byť aj relatívna.
13.1.2011 15:17 chrono
Rozbalit Rozbalit vše Re: Ajax onreadystatechange
A ešte som zabudol na to, že v tom javascripte sa používa zpracujEmail.php a skript sa pri tom volá zkontrolujEmail.php a do premennej obsah sa v tom javascripte vloží responseText a neskôr sa v podmienke používa obsah.responseText.
13.1.2011 15:19 chrono
Rozbalit Rozbalit vše Re: Ajax onreadystatechange
A posledná poznámka. :) Zisťovanie, či je emailová adresa platná, je oveľa zložitejšie ako to, čo máš teraz v zkontrolujEmail.php (určite je veľa správnych emailových adries, ktoré tej tvojej podmienke nebudú vyhovovať).
13.1.2011 15:28 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Ajax onreadystatechange
Navíc otestovat správnost e-mailové adresy regulárním výrazem jde stejně dobře i v JavaScriptu, a vyhnete se tak zbytečné síťové komunikaci.

Jinak je vidět, že když si někdo ten skript zkusí spustit, najde tu chybu hned mnohem snáz :-)
13.1.2011 15:32 chrono
Rozbalit Rozbalit vše Re: Ajax onreadystatechange
Určite je rozumnejšie aspoň časť tej kontroly robiť priamo v javascripte a neposielať to po každom stlačenom klávese serveru (navyše teraz to nijako nerieši prípad, ak sa jedna požiadavka mierne zdrží a príde neskôr ako nasledujúca a podobných problémov tam bude aj viac).
15.1.2011 03:44 Michal
Rozbalit Rozbalit vše Re: Ajax onreadystatechange
Bohužel se mi to nepodařilo rozchodit. Máte pravdu v tom, že nemá cenu se tím zabývat. Raději jsem se naučil JQuery a Emaily je opravdu lepší otestovat přímo v JS.

Děkuji všem.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.