[DOM] faire une requete asynchrone
Bonjour j'aimerai faire une requete asynchrone avec ajax via un script php plutot simple.
pour l'instant ce script est pas tres optimisé faut dire et c'est pour cela qu'ajax me semble très bien.
Le problème c'est que je n'arrive pas a comprendre le fonctionnement.
Voici mon script php simple:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| <?php
error_reporting(0);
$id_email = 0;
$email = '';
se_connecter();
if(isset($_POST['new_contact']))
{
$id_email = isset($_POST['id'])?($_POST['id']):0;
$email = isset($_POST['email'])?($_POST['email']):'';
if (empty($email))
{
echo '<span class="reponse_newsletters">Vous devez remplir le champ</span>';
$erreur = true;
}
else
{
if (!eregi('^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-_.]?[0-9a-z])*\\.[a-z]{2,4}$',$email))
{
echo '<span class="reponse_newsletters">L\'adresse e-mail n\'est pas correcte :('.$email.')</span>';
$erreur = true;
}
}
if($erreur == false)
{
// On vérifie si c'est une modification d'adresse ou pas
if ($id_email == 0)
{
// Ce n'est pas une modification, on crée une nouvelle entrée dans la table
query("INSERT INTO membernews VALUE ('','" . mysql_real_escape_string($email) . "')");
}
echo '<span class="reponse_newsletters">merci pour votre inscription</span>';
echo '<span class="reponse_newsletters">'.$email.'</span><br/>';
}
}
?> |
Comment doit je faire pour que ceci communique avec Ajax ???
j'ai essayer ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| var requete = null;
try {
requete = new XMLHttpRequest();
} catch (essaimicrosoft) {
try {
requete = new ActiveXObject("Msxml2.XMLHTTP");
} catch (autremicrosoft) {
try {
requete = new ActiveXObject("Microsoft.XMLHTTP");
} catch (echec) {
requete = null;
}
}
}
if (requete == null)
alert("Impossible de créer l'objet requête!");
function actualiserPage() {
if (requete.readyState == 4) {
if (requete.status == 200) {
/* Obtenir la réponse du serveur */
var adresseMail = requete.responseText;
/* Mettre à jour le HTML du formulaire web */
document.getElementById("email").value =
adresseMail;
} else
alert("Erreur ! Le statut de la requête est " + requete.status);
}
}
function soumettreEmail() {
var email = document.getElementById("email").value;
var url = "verif_mail.php";
requete.open("POST", url, true);
requete.onreadystatechange = afficherConfirmation;
requete.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");
requete.send("email=" + escape(mail));
}
function afficherConfirmation() {
if (requete.readyState == 4) {
if (requete.status == 200) {
var reponse = requete.responseText;
// Localiser le formulaire dans la page
var divPrincipal = document.getElementById("principale");
var formulaireCde = document.getElementById("formulaire");
// Créer un texte de confirmation
pElement = document.createElement("p");
textNode = document.createTextNode("Votre adresse mail est " +
reponse);
pElement.appendChild(textNode);
// Remplacer le formulaire par la confirmation
divPrincipal.replaceChild(pElement, formulaireCde);
} else {
var message = requete.getResponseHeader("Statut");
if ((message == null) || (message.length <= 0)) {
alert("Erreur ! Le statut de la requête est " + requete.status);
} else {
alert(message);
}
}
}
} |
Mon script php est pas mal sans ajax mais j'aimerai vraiment afficher mes messages d'erreur ou de réussite via reponseTexte
Code:
1 2 3 4 5 6 7 8
|
[<div id="principale">
<form id="formulaire"/>
<input type="text" name="email" ?>" maxlength="30" id="email" />
<input type="hidden" name="id" id="id" /><br />
<input type="bouton" name="new_contact" value="Envoi" onClick="soumettreEmail();" />
<input type="reset" value="Reset" />
</div> |
Comment arranger tout ceci pour que cela fonctionne je suis un peut perdu ma déjà fallu du temps pour écrire sa :aie: