Probleme formulaire ajax
rollings4
Messages postés
19
Statut
Membre
-
rollings4 Messages postés 19 Statut Membre -
rollings4 Messages postés 19 Statut Membre -
Bonjour, jai un probleme avec mon code ajax , j'essaie de vérifier des données envoyées par un formulaire dans la base de données , bon tout marche bien ,je récupère bien la réponse envoyée par le fichier php , je reussi à la tester et a envoyer le message d'erreur si l'email existe déja ,mais je n'arrive pas a arreter l'exécution s'il ya erreur dans l'email , c'est à dire qu'on affiche l'erreur mais le formulaire va toujours .
function request(callback) {
var email = document.getElementById("email").value;
var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
callback(xhr.responseText);
document.getElementById("loader").style.display = "none";
} else if (xhr.readyState < 4) {
document.getElementById("loader").style.display = "inline";
}
};
xhr.open("GET", "XMLHttpRequest_getSleep.php?email=" + email, true);
xhr.send(null);
}
function readData(sData) { //fonction qui récupère valeur retournée par php
, vaut 1 si l'email n'a pas encore été utilisée et 0 si
elle a été utilisée
var div = sData;
if(div==1)
{
document.form_inscript.submit();
}
if(div==0)
{
writediv("Cette adresse email a deja été utilisée");
return false;
}
}
function verif() //la fonction qui est appellée au submit du formulaire
{
picdiv('<img src="images/charg.gif"/">');
nom = document.getElementById('nom').value ;
prenom = document.getElementById('prenom').value ;
email = document.getElementById('email').value ;
pass = document.getElementById('pass').value ;
sexe = document.getElementById('sex').value;
if(nom.length == 0 || prenom.length == 0 || email.length == 0 || pass.length == 0 || sexe == 0)
{
setTimeout("writediv( 'Veuillez remplir tous les champs</span>')" , 1000);
setTimeout(" picdivno('')" , 1000);
return false;
}
else if(nom.length < 2 || prenom.length < 2 || email.length < 4 || pass.length < 6)
{
setTimeout("writediv(' Veuillez respecter les tailles prescrites')" ,1000);
setTimeout(" picdivno('')" , 1000);
return false;
}
else
{
request(readData); //ici on appelle la fonction qui
envoi les données au fichier php
setTimeout(" picdivno('')" , 2000);
}
}
je veux que mon formulaire soit envoyé selon l'erreur ou pas.merci
function request(callback) {
var email = document.getElementById("email").value;
var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
callback(xhr.responseText);
document.getElementById("loader").style.display = "none";
} else if (xhr.readyState < 4) {
document.getElementById("loader").style.display = "inline";
}
};
xhr.open("GET", "XMLHttpRequest_getSleep.php?email=" + email, true);
xhr.send(null);
}
function readData(sData) { //fonction qui récupère valeur retournée par php
, vaut 1 si l'email n'a pas encore été utilisée et 0 si
elle a été utilisée
var div = sData;
if(div==1)
{
document.form_inscript.submit();
}
if(div==0)
{
writediv("Cette adresse email a deja été utilisée");
return false;
}
}
function verif() //la fonction qui est appellée au submit du formulaire
{
picdiv('<img src="images/charg.gif"/">');
nom = document.getElementById('nom').value ;
prenom = document.getElementById('prenom').value ;
email = document.getElementById('email').value ;
pass = document.getElementById('pass').value ;
sexe = document.getElementById('sex').value;
if(nom.length == 0 || prenom.length == 0 || email.length == 0 || pass.length == 0 || sexe == 0)
{
setTimeout("writediv( 'Veuillez remplir tous les champs</span>')" , 1000);
setTimeout(" picdivno('')" , 1000);
return false;
}
else if(nom.length < 2 || prenom.length < 2 || email.length < 4 || pass.length < 6)
{
setTimeout("writediv(' Veuillez respecter les tailles prescrites')" ,1000);
setTimeout(" picdivno('')" , 1000);
return false;
}
else
{
request(readData); //ici on appelle la fonction qui
envoi les données au fichier php
setTimeout(" picdivno('')" , 2000);
}
}
je veux que mon formulaire soit envoyé selon l'erreur ou pas.merci
A voir également:
- Probleme formulaire ajax
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Formulaire de reclamation instagram - Guide
- Récupérer compte outlook sans formulaire - Forum Hotmail / Outlook.com
- Confirmer le nouvel envoi du formulaire err_cache_miss ✓ - Forum Access
7 réponses
Il faut utiliser « return false ».
Dans verif(), quand tu appelles la fonction request() :
Dans verif(), quand tu appelles la fonction request() :
return request(...);Dans la fonction request(), lorsque tu appelles le callback (readData) :
return callback(...);Dans readData(), utilise "return false;" lorsqu'il faut bloquer le formulaire.
merci pour ta réponse;
j'ai mis les return mais le formulaire est quand même envoyé quand il y a erreur .
,lorsque je mets return false dans verif() le formulaire n'est pas envoyé quelque soit la réponse , et quand je l'enlève il est toujours envoyé , et quand je mets
return request(readData); c'est quand meme envoyé .pour info le ficher php retourne comme réponse 0 ou 1.
please help me.
j'ai mis les return mais le formulaire est quand même envoyé quand il y a erreur .
,lorsque je mets return false dans verif() le formulaire n'est pas envoyé quelque soit la réponse , et quand je l'enlève il est toujours envoyé , et quand je mets
return request(readData); c'est quand meme envoyé .pour info le ficher php retourne comme réponse 0 ou 1.
please help me.
Ajoute aussi un "return" avant "verif()" (quand tu appelles cette fonction, dans onsubmit je suppose).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
oui j'ai déja mis un return là ba mais ça fonctionne pas, lorsque je met return xhr.responsetext , ça envoie le formulaire car xhr.responsetext est vide , est ce qu 'il n ya pas une méthode directe pour récupérer la réponse dans le fichier php???
Quel est ton code actuel ?
Utilise la balise "code" sur CCM, ou un pastebin (gist.github.com, paste.pocoo.org, ...).
Utilise la balise "code" sur CCM, ou un pastebin (gist.github.com, paste.pocoo.org, ...).
function request(callback)
{
var email = document.getElementById("email").value;
var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
return callback(xhr.responseText);
document.getElementById("loader").style.display = "none";
} else if (xhr.readyState < 4) {
document.getElementById("loader").style.display = "inline";
}
};
xhr.open("GET", "XMLHttpRequest_getSleep.php?email=" + email, true);
xhr.send(null);
}
function readData(sData) {
var div = sData;
if(div==1)
{
return true;
}
if(div==0)
{
writediv("Cette adresse email a deja été utilisée");
return false;
}
}
function verif()
{
picdiv('<img src="images/charg.gif"/">');
nom = document.getElementById('nom').value ;
prenom = document.getElementById('prenom').value ;
email = document.getElementById('email').value ;
pass = document.getElementById('pass').value ;
sexe = document.getElementById('sex').value;
if(nom.length == 0 || prenom.length == 0 || email.length == 0 || pass.length == 0 || sexe == 0)
{
setTimeout("writediv( 'Veuillez remplir tous les champs</span>')" , 1000);
setTimeout(" picdivno('')" , 1000);
return false;
}
else if(nom.length < 2 || prenom.length < 2 || email.length < 4 || pass.length < 6)
{
setTimeout("writediv(' Veuillez respecter les tailles prescrites')" ,1000);
setTimeout(" picdivno('')" , 1000);
return false;
}
else
{
setTimeout(" picdivno('')" , 2000);
return request(readData);
}
}
// et voici le ficher php
<?php include("database.php");
header("Content-Type: text/plain");
$email = (isset($_GET["email"])) ? $_GET["email"] : NULL;
$req=mysql_query("SELECT * FROM user WHERE email ='".$email."'");
$res=mysql_num_rows($req);
if ($res == 0)
{
sleep(2);
echo 1;
}
else
{
sleep(2);
echo 0;
}
?>
// ainsi que le formulaire
<form method="post" action="index.php" id="form_inscript" name ="form_inscript" onsubmit="return verif(this)" >
<div class="div_label_inscript"><label class="label_inscript" for=""> Nom</label></div> : <input id="nom" name ="nom" onkeyUp="verif2(this.value)" onblur="onput(this.value)" class="input_inscript" size="22" type="text" name="nom" /><br/>
<div class="div_label_inscript"><label class="label_inscript" for=""> Prénoms</label></div> : <input id="prenom" name="prenom" class="input_inscript" size="22" type="text" onkeyUp="verif2(this.value)" onblur="onput(this.value)" name="prenom" /><br/>
...