mam co kiedyś walidacja forma pracy, w tym zdalne sprawdzenie nazwy użytkownika jako dostępne. dodaliśmy wiele innych javascript do pliku script.js iw pewnym momencie zdalna część tego się zepsuła. Istnieje tylko jedno pole formularza sprawdzane przez validate, pole new_name. Jest wymagany (działa) i musi być dostępny (nie działa).Jquery Validate Remote nie działa. Nie można Złożenie
Oto jQuery:
$('#nickname_form').validate({
rules: {
new_name: {
required: true,
remote: {
url: '/api/screenname_unique/',
type: 'post'
}
}
},
messages: {
new_name: {
required: 'Please choose a Forum Username.',
remote: 'That Username is already taken or contains invalid characters.'
}
}
});
Jak powiedziałem wyżej wykorzystywane do pracy, bez żadnych zmian. Sprawdziłem resztę pliku script.js i nie pojawiają się żadne błędy. Ponadto w witrynie nie zauważamy błędów JS w dowolnym miejscu. Jeśli usunę część zdalną powyższego kodu, wymagany sprawdzian działa i formularz zostanie przesłany, gdy w polu znajdzie się wartość.
ze zdalnym w miejscu, forma nie podda i czy ajax odpowiedź ze zdalnego wywołania jest prawdziwe lub fałszywe, nie ma jQuery sprawdzania pokazany komunikat o błędzie. Oto strona wywoływana przez zdalny. To działa dobrze, jeśli chodzi o odpowiedzi to daje dla danej wartości:
<?php
header('Content-type: application/json');
//get the post value
$screen_name = $_POST['new_name'];
//get their member_id
$member_id = $this->EE->session->userdata['member_id'];
//return false if no screen_name provided
if((!$screen_name) || (!$member_id)) {
echo json_encode(false);
exit;
} else { //there is a screen_name
//Regex Check for valid chars
$valid = !preg_match('/[^a-z0-9_ -]/i',trim($screen_name));
if (!$valid) {
echo json_encode(false);
exit;
}
//SQL
$results = $this->EE->db->query("SELECT member_id FROM exp_members WHERE screen_name = '$screen_name' and member_id <> '$member_id' limit 1");
if ($results->num_rows() > 0) {
echo json_encode(false);
} else {
echo json_encode(true);
}
}
>
Nie jestem pewien gdzie iść stąd. Pomysły?
Czy korzystal 'console.log' lub obserwował ajax wzywa do debugowania problem? – yoda
Oglądałem z Firebug, a wywołania ajax zwróciły 200 OK wraz z prawdą lub fałszem odpowiednio. Funkcja działa poprawnie - formularz po prostu nie zostanie przesłany poprawnie lub nie odpowie na niedostępną nazwę użytkownika. –