Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Valider un formulaire avec XMLHttpRequest

4 views
Skip to first unread message

Pascal Bourdais

unread,
Jan 4, 2010, 5:38:30 AM1/4/10
to
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.

Pascal

unread,
Jan 4, 2010, 6:19:06 AM1/4/10
to
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 "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)


0 new messages