Najlepiej to jakbyś pokazał co robisz. W/g mnie to powinno działać tak:
1. Robisz plik PHP o treści takiej jak w przykładzie a na jego początku wstawiasz (wywaliłem tłumienie błędów):
if ($_REQUEST['action'] == 'check_username' && isset($_SERVER['HTTP_X_REQUESTED_WITH'])) { //jeśli odpowiednie zmienne zostały przekazane.. echo json_encode
(check_username
($_REQUEST['username'])); //wywołaj funkcję przekazując jej wartość z pola username a następnie zakoduj zwrócone dane do formatu json, czyli cały skrypt powinien zwrócić sformatowane na JSON dane w postaci dwuelementowej tablicy exit; // only print out the json version of the response }
2. Kod z markup to twój formularz
3. jQuery ładujesz do pliku z formularzem, oczywiście najpierw umieszczasz link do biblioteki
4. ajax-validation.php i plik z formularzem muszą być w tym samym katalogu.
Można to też rozwiązać tak:
1. W polu formularza umieszczasz:
echo '<input class="input" name="password" id="password_input" type="password" value="'.$_POST['password'].'" maxlength="14" onblur="ajax_check(this.value, this.name)"/>';
To jest odwołanie do skryptu jQuery, któremu przekazujesz wartość i nazwę danego pola
2. Skrypt jQuery u mnie wygląda tak:
function ajax_check(input_value, input_name) {
$.post("view/ajax_check.php",{checker:input_value, checker_name:input_name}, function(data) {
if(data) { //jesli skrypt PHP zwrócił ()wyświetlił) dane
$('form input#'+input_name+'_input').removeClass('input input_ok').addClass('input_error'); //remove old class from input field and add error class
$('#'+input_name+'_tick').css({'display' : 'none'}); //ukrywanie zdjęcia z id poprawnej odpowiedzi dla danego pola
$('#'+input_name+'_cross').css({'display' : 'block'}); //pokazywanie zdjęcia z id błędnej odpowiedzi dla danego pola
$('div#error_'+input_name).css({'display' : 'block'}); //pokazanie ostylowanego diva z błędem odpowiedzi dla danego pola
$('div#error_'+input_name).text(data); //umieszczenie pobranej z pliku PHP treści w tym divie
}
else { //jesli dane nie zostały zwrócone to znaczy, że wszystko było ok
$('form input#'+input_name+'_input').removeClass('input input_error').addClass('input_ok'); //remove old class from input field and add error class
$('div#error_'+input_name).css({'display' : 'none'}); //ukrywamy div z błędami
$('#'+input_name+'_cross').css({'display' : 'none'}); //ukrywamy grafikę z błędami
$('#'+input_name+'_tick').css({'display' : 'block'}); //pokazujemy style dla poprawnej odpowiedzi
}
});
}
Plik PHP
$checker = $_POST['checker']; //wartośc pola value dla uproszczenia pomijam czyszczenie danych od usera
$checker_name = $_POST['checker_name']; //nazwa pola name dla uproszczenia pomijam czyszczenie danych od usera
switch($checker_name) {
case 'konto':
echo 'Nazwa użytkonwika musi mieć od 1 do 80 znaków.'; break;
}
$ile =mysql_query("SELECT * FROM `users` WHERE login = '$checker'"); if ($ile==0) {
}
else {
echo 'Użytkownik ' .$checker. ' już istnieje wybierz inną nazwę.'; }
break;
case 'password':
$_SESSION[$pass] = $checker;
if (!checkUserPass($checker)) {
echo 'Hasło użytkonwika musi mieć od 3 do 14 znaków. I może się składać tylko ze znaków alfanumerycznych.'; }
break;
case 'password2':
if ($checker !== $_SESSION[$pass]) {
echo 'Hasła nie są takie same.'; }
break;
case 'email':
if (!filter_var
(trim($checker), FILTER_VALIDATE_EMAIL
)) { echo 'Adres e-mail ma niepoprawny format.'; }
break;
default:
echo 'Formularz zawiera niepoprawne lub niekompletne dane.'; break;
}