Autor | Zpráva | ||
---|---|---|---|
jaroslav7 Profil |
#1 · Zasláno: 24. 12. 2012, 02:50:28
Zdravím,
chtěl bych vytvořit porovnávání políčka formuláře se záznamem v DB před odesláním celého formuláře (testovat zda už je login obsazen). formulář na stránce prihlaseni.php mám vytvořen takto: <form action=<?php echo 'Zakaznik.php?akce=prihlasit';?> method="post"> Uživatelské jméno: <input type="text" id="jmeno" value="" name="username" onkeyup="overUsername()"><br> Heslo: <input type="password" name="heslo"><br> <input type="submit" name="odeslat" value="Přihlásit"> </form> v hlavičce stránky mám tento script <script> function overUsername(){ var XMLHttpRequest = false; if (window.XMLHttpRequest){ // vytvoreni objektu XMLHttpRequest v novych prohlizecich XMLHttpRequest = new XMLHttpRequest(); } else if (window.ActiveXObject){ // v IE5 a IE 6 se pouziva ActiveXObject XMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } var input = document.getElementById("jmeno"); var cilovyDiv = document.getElementById("cilovyDiv"); if(XMLHttpRequest) { XMLHttpRequest.open("POST","zpracuj.php", true); XMLHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); XMLHttpRequest.onreadystatechange = function(){ if (XMLHttpRequest.readyState == 4 && XMLHttpRequest.status == 200) { var obsah=XMLHttpRequest.responseText; //odpoved serveru if(obsah.responseText == "ne"){ cilovyDiv.innerHTML = "<div>ZMENTE JMÉNO.</div>"; } if(obsah.responseText == "ano"){ cilovyDiv.innerHTML = "<div>VOLNÉ.</div>";} } } XMLHttpRequest.send("jmeno="+input.value);} } </script> skript jsem si půjčil odtud tak snad by měl být správně. ve zpracuj.php mám: <?php include "DB_spojeni.php"; if($_REQUEST["username"]){ $prom = $_REQUEST["username"]; $dotaz = "SELECT zakaznik_login FROM zakaznik WHERE zakaznik_login = '" . $prom . "';"; $vysledek = mysql_query($dotaz) or die(mysql_error()); if (mysql_num_rows($vysledek) != 0) {echo "ne";} else {echo "ano";} } ?> Vůbec nic to nedělá. Myslím, že se ani nevykoná ta funkce overUsername() a nejsem si jistý jestli mohu k těmto proměnným přistupovat přes $_REQUEST[]. Neví někdo kde je chyba / jsou chyby? |
||
Chamurappi Profil |
#2 · Zasláno: 24. 12. 2012, 05:34:18
Reaguji na jaroslava7:
„skript jsem si půjčil odtud tak snad by měl být správně“ Vypadá správně. Nejspíš by fungoval, kdybys ho neupravoval zbytečně víc, než je potřeba. Zdá se, že jsi změnil název proměnné XMLHttpRequestObjekt tak, aby byl v konfliktu s názvem nativního objektu. Na to pozor. Nemůžeš dvěma různým věcem říkat stejně. Konkrétně to vadí, protože…
„ XMLHttpRequest = new XMLHttpRequest(); “
Do lokální proměnné XMLHttpRequest jsi dal o dva řádky výš false . A jelikož false není konstruktor, nemůžeš z něj vyrábět novou instanci — něco podobného by ti pověděla i chybová konzole v prohlížeči.
|
||
jaroslav7 Profil |
#3 · Zasláno: 24. 12. 2012, 14:32:15
Chamurappi:
Díky, po změně názvu proměnných už to funguje. Ještě k tomu mám jeden dotaz ohledně volání funkce overUsername() z externího js souboru. Když mám tuto funkci přímo v hlavičce stránky tak to funguje, ale když jí umístím do Java_script.js a v hlavičce stránky mám <script src="Java_script.js"></script> tak nevím jak tu funkci zavolat okeyup="overUsername()" nefunguje. Zatím se mi nepodařilo z externího souboru zavolat žádnou funkci, kterou sem zkoušel tak nevím, co dělám špatně.
|
||
Časová prodleva: 3 dny
|
|||
Chamurappi Profil |
#4 · Zasláno: 27. 12. 2012, 17:07:52
Reaguji na jaroslava7:
„Zatím se mi nepodařilo z externího souboru zavolat žádnou funkci“ Tak ho máš asi špatně přilinkovaný. Opravdu se jmenuje Java_script.js ? Je ve správném adresáři? Není v něm nějaká podivnost, která v něm nemá být? Hodila by se nejspíš živá ukázka.
|
||
Časová prodleva: 11 let
|
0