Witam!
Zacząłem bawić się z Ajaxem i napotkałem na problem, którego nie potrafię obejść.
W związku z tym proszę o pomoc.
Pod IE działa jak najbardziej prawidłowo, tzn. na submit sprawdza i jeśli login lub email sie powtarza to wyskakuje alert i border pola robi się czerwony.
Pod FF na submit się po prostu submituje (przechodzi do register3.php), a ewentualne błędy pokazuje dopiero po wciśnięciu "Wstecz".
Cały przykład z artykuły nospor'a (IMG:
http://forum.php.pl/style_emoticons/default/biggrin.gif)
Kod:
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <form action="register3.php" method="POST" id="registerForm" name="registerForm"> <tr><td class="napis">Login:
</td><td><input type="text" name="login" id="login"></td></tr> <tr><td class="napis">Powtórz hasło:
</td><td><input type="password" name="Haslo2"></td></tr> <tr><td class="napis">E-mail:
</td><td><input type="text" name="email" id="email"></td></tr> <tr><td colspan="2" style="text-align: center;"><button onClick="sprawdz_dane();">Zarejestruj mnie...
</button></td></tr>
Register.js:
function $(id) {
return document.getElementById(id);
}
function sprawdz_dane() {
var login = $("login").value;
var email = $("email").value;
var zapytanie = "register2.php?login="+login+"&email="+email;
advAJAX.get({
url : zapytanie,
onSuccess : function(obj) {
if(obj.responseText == "login") {
alert("Użytkownik o takim loginie jest już w bazie danych");
$("login").style.border='1px solid red';
$("email").style.border='1px solid #7F9DB9';
}
if(obj.responseText == "email") {
alert("Ten e-mail isntieje już w bazie danych");
$("login").style.border='1px solid #7F9DB9';
$("email").style.border='1px solid red';
}
if(obj.responseText == "OK")
$("registerForm").submit();
}
});
}
Register2.php:
<?
$dbhost = 'localhost';
$dblogin = 'root';
$dbhaslo = '';
$db = 'testowa';
$sql = mysql_connect ($dbhost, $dblogin, $dbhaslo) or
die ("Nie masz uprawnien"); $query = "SELECT count(*)AS Ile FROM test1 WHERE Login='".$login."';";
if($row['Ile'])
else {
$query = "SELECT count(*)AS Ile FROM test1 WHERE e_mail='$email';";
if($row['Ile'])
}
?>
Wiadomo, że register3.php to plik dowolny do którego trafiają dane po przebrnięciu przez Ajaxa, więc nie będę go tu umieszczał.
Nospor - do tablicy Cię wywołuję!! (IMG:
http://forum.php.pl/style_emoticons/default/smile.gif) W końcu to Twój przykład (IMG:
http://forum.php.pl/style_emoticons/default/biggrin.gif)