Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Valider un formulaire avec XMLHttpRequest

1 réponse
Avatar
Pascal Bourdais
Bonjour,

Je créé un formulaire sur lequel il y a une saisie login/mdp. Pour
changer un peu, je voulais valider ça avec XMLHttpRequest

J'ai donc :
reserv.php
*-*-*-*-*-*
<head>
...
<script src="valid.js" type="text/javascript"></script>
...
<...>
<form class="info" action="index.php" method="post"
name="fuser" id="fuser"
onsubmit="return validate(document.fuser.login.value,
document.fuser.passwd.value);" >
<...>

valid.js
*-*-*-*-*-*
function createXhrObject()
{
if (window.XMLHttpRequest) return new XMLHttpRequest();

if (window.ActiveXObject) {
var names = [
"Msxml2.XMLHTTP.6.0",
"Msxml2.XMLHTTP.3.0",
"Msxml2.XMLHTTP",
"Microsoft.XMLHTTP"
];
for(var i in names) {
try{ return new ActiveXObject(names[i]); }
catch(e){}
}
}
window.alert("Votre navigateur ne prend pas en charge l'objet
XMLHTTPRequest.");
return null; // non supporté
}

function validate(login, passwd)
{

var res = false;
var xhr_object = createXhrObject();
if (xhr_object == null)
return res;

var filename = "validate_login.php";
var s1 = login;
var s2 = passwd;
var data = null;

data = "login="+s1+"&passwd="+s2;

xhr_object.open("POST", filename, true);

xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
var tmp = xhr_object.responseText.split(":");
if (tmp[0] == "1") {
return true;
}
}
return false
}

xhr_object.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");
xhr_object.send(data);

return res;
}

Si je fait un alert dans la fonction onreadystatechange, je recupère
bien les valeurs que j'attends, mais la validation du formulaire ne
fonctionne pas. Evidemment, il récupère le code retour de validate, et
non pas celui de la fonction onready...

Il y a moyen de faire ça ?

Merci

Pascal.

1 réponse

Avatar
Pascal
Pascal Bourdais a écrit :
Bonjour,



Bonjour,

Je créé un formulaire sur lequel il y a une saisie login/mdp. Pour
changer un peu, je voulais valider ça avec XMLHttpRequest



Si c'est juste pour changer, c'est toujours un peu risqué... ;-)

<form class="info" action="index.php" method="post"
name="fuser" id="fuser"
onsubmit="return validate(document.fuser.login.value,
document.fuser.passwd.value);" >



Il y a plusieurs façons de faire mais, déjà, je n'aurais pas géré la
soumission du formulaire à cet endroit.

xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
var tmp = xhr_object.responseText.split(":");
if (tmp[0] == "1") {
return true;
}
}
return false
}



Je pense qu'il faudrait plutôt la gérer dans la fonction liée à
"onreadystatechange ".
Donc, en fin de formulaire, un simple bouton avec un évènement "oncli ck"
qui déclenche l'appel XHR, et non pas de submit qui, lui, sera déclen ché
par la fonction susdite.

Merci



De rien.
Cordialement,
Pascal (aussi)