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.
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 "onclick"
qui déclenche l'appel XHR, et non pas de submit qui, lui, sera déclenché
par la fonction susdite.
> Merci
De rien.
Cordialement,
Pascal (aussi)