25-09-2009, 03:13 PM
(Modification du message : 26-09-2009, 08:40 PM par Sephi-Chan.)
Bonjour,
Je suis actuellement en train de créer un site de graphisme afin de partager mes connaissances dans le domaine, et je bute sur une erreur de mon code Ajax concernant un formulaire de Newsletter.
Voici ce que ça donne:
Page oXHR.js:
Page du Formulaire:
Page de Traitement:
Je suis actuellement en train de créer un site de graphisme afin de partager mes connaissances dans le domaine, et je bute sur une erreur de mon code Ajax concernant un formulaire de Newsletter.
Voici ce que ça donne:
Page oXHR.js:
Code :
function getXMLHttpRequest() {
var xhr = null;
if (window.XMLHttpRequest || window.ActiveXObject) {
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
} else {
xhr = new XMLHttpRequest();
}
} else {
alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
return null;
}
return xhr;
}
Page du Formulaire:
Code :
<html>
<head>
<script type="text/javascript"></script>
<script type="text/javascript">
<!--
function submitForm(email){
var xhr= new getXMLHttpRequest();
xhr.open("POST", "t_newsletter.php", true);
xhr.onreadystatechange= function() {
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status== 0)) {
if(document.getElementById){
if(xhr.responseText == 'true') { //envoi OK
document.getElementById("msg").innerHTML= "Inscription à la Newsletter réussie !";
}else{
document.getElementById("msg").innerHTML= xhr.responseText;
}
}
}
}
xhr.setRequestHeader('Content-type','application/x-www-form-unlencoded');
xhr.send('Email='+email);
}
//-->
</script>
</head>
<body>
<form method="POST" action="" onsubmit="submitForm(this.email.value);return false">
<div>Email:<input type="text" name="email" id="email"></div>
<div><input type="submit" value="S'inscrire"/></div>
</form>
<div id="msg"></div>
</body>
</html>
Page de Traitement:
Code PHP :
<?php
session_start();
mysql_connect("localhost","","");
mysql_select_db("newsletter");
$erreurs= array(); //tableau des erreurs
if(!$_POST['email']){
$erreurs[]= 'Veuillez entrer une adresse E-mail';
}
if(!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email'])){
$erreurs[]= 'Cette adresse E-mail est invalide';
}
if(count($erreurs) == 0){
mysq_query("INSERT INTO newsletter VALUES('','".$_POST['email']."'")or die("L'envoi des données a échoué");
echo "true";
}else{
for($i=0; $i<count($erreurs); $i++){
echo $erreurs[$i];
}
}
?>
Je tiens à préciser que ce code peut bien sûr être amélioré, ce que je pensais faire une fois l'erreur déterminée.
Mon problème se pose en fait sur le traitement du contenu du champ "email". En fait aucune erreur ne s'affiche comme prévu dans le code Ajax et les données ne sont pas envoyées au serveur si le contenu du champ est bon.
Voilà en quoi consiste mon problème pour le moment.
J'espère que quelqu'un pourra m'aider à trouver la solution, et merci à tous ceux qui répondront à ce message.
Reaven