Autor | Zpráva | ||
---|---|---|---|
Majkelju Profil |
Tento kus kódu mi na jedné stránce normálně funguje, chtěl jsem ho použít na jiné (v rámci jednoho webu) a nemůžu to rozjet. Ve formuláři mám nastaveno
onSubmit="return kontrola();" , takže před odesláním dat do db se mi spustí funkce kontrolující, zda už uživatelské jméno je nebo není v databázi:
function kontrola(){ var jmeno = self.document.forms.newPassForm.user.value; $("checkMail").load("checkMail.php?mail="+jmeno, function(){ alert(jeObsazen); }); return true; } Soubor checkMail.php vypadá takto: <? include "protected/_mysql.php"; $mail=$_GET['mail']; $query = mysql_query("SELECT `id` FROM `users` WHERE `name` = '".$mail."'"); $data=mysql_fetch_array($query); if($data['id']==NULL) $jeObsazen = false; else $jeObsazen = true; ?> <script> var jeObsazen = <?echo $jeObsazen;?> </script> O co mi jde, je to, že pokud to dobře chápu, po provedení metody .load() můžu v následujícím function bloku používat proměnné z naloadovaného souboru. Alespoň jinde mi to takto funguje. Jenže tady mi alert nevypíše nic, respektive se ani neprovede. Nebo jak jinak vytáhnout proměnnou jeObsazen z checkMail.php? |
||
Chamurappi Profil |
#2 · Zasláno: 18. 12. 2013, 18:16:41
Reaguji na Majkelju:
„pokud to dobře chápu, po provedení metody .load() můžu v následujícím function bloku používat proměnné z naloadovaného souboru“ Ne. Elementy <script> přiřazené do innerHTML se neinterpretují.
„Nebo jak jinak vytáhnout proměnnou jeObsazen z checkMail.php?“ K čemu ti ta proměnná bude, když už kontrola v době přijetí odpovědi ze serveru stejně dávno vrátila true ?
|
||
Majkelju Profil |
Nerozumím....mám tedy odstranit return true; na konci funkce
kontrola ? Zkoušel jsem to i bez returnu, ale chová se to úplně stejně jako s ním. Jak tu proměnnou tedy vydolovat?
|
||
Chamurappi Profil |
#4 · Zasláno: 18. 12. 2013, 18:25:42
Reaguji na Majkelju:
„mám tedy odstranit return true; na konci funkce kontrola ?“
Jestli chceš přerušit standardní odeslání, vrať false . Jestli nechceš přerušit standardní odeslání, vrať true (nebo nevracej nic). Výsledek funkce kontrola ale nemůže být závislý na asynchronně získávané informaci ze serveru.
„Jak tu proměnnou tedy vydolovat?“ Nevím, proč stahovaný obsah chceš ukládat do innerHTML nějakého prvku. Jestli se domníváš, že všechno, co stáhneš AJAXem, musíš vlepit někam dovnitř existující stránky, tak máš o AJAXu hodně zkreslenou představu.
|
||
Majkelju Profil |
#5 · Zasláno: 18. 12. 2013, 18:26:23 · Upravil/a: Majkelju
Jinak ta proměnná se jinde, než v té funkci používat nebude. Potřebuju ji jen do podmínky, zda vyhodit nebo nevyhodit alert (což v ukázce výše zatím nemám)
Chamurappi: No taky netvrdím, že se v AJAXu bůhvíjak vyznám :) Co vím, tak bych místo .load() mohl použít třeba .get(), ale zatím jsem potřeboval používat spíš .load, takže se mi do .get nechtělo, navíc mi to přišlo skoro stejné. Takže musím použít .get() místo .load() a pak mi to uvnitř následného function bloku půjde vypsat? |
||
Časová prodleva: 10 let
|
0