Possiedo una convalida del modulo di lavoro, incluso il controllo remoto di un nome utente disponibile. abbiamo aggiunto molti altri javascript al file script.js e ad un certo punto di recente la parte remota di questo è stata interrotta. C'è un solo campo modulo controllato da validate, il campo new_name. È richiesto (funziona) e deve essere disponibile (non funziona).Jquery Validate Remote non funziona. Impossibile inviare il modulo
Ecco il 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.'
}
}
});
Come ho detto sopra utilizzato per lavorare, senza modifiche. Ho controllato il resto del file script.js e non si sono verificati errori. Inoltre, nel sito, non vediamo errori JS ovunque. Se rimuovo la parte remota del codice precedente, il controllo richiesto funziona e il modulo verrà inviato quando c'è un valore nel campo.
Con il telecomando in posizione, il modulo non viene inviato e se la risposta ajax dalla chiamata remota è vera o falsa, non viene visualizzato alcun messaggio di errore di convalida jQuery. Ecco la pagina chiamata da remoto. Funziona bene per quanto riguarda la risposta che sta dando per un dato valore:?
<?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);
}
}
>
io non sono realmente sicuro dove andare da qui. Idee?
Hai usato 'console.log' o hai guardato le chiamate ajax per eseguire il debug del problema? – yoda
Ho guardato con Firebug e le chiamate ajax stanno restituendo 200 OK insieme a vero o falso in modo appropriato. La funzione funziona correttamente: il modulo non invia o risponde correttamente a un nome utente non disponibile. –