boujour à tous,
sur un de mes sites j'ai une page en php qui envoi un mailing aux abonnés, script qui fonctionne parfaitement.
voulant déclancher cette fonction d'une façon plus structuré j'ai voulu sur une autre page rajouter un bouton d'envoi et une fonction ajax asynchrone et post,
(type de programmation que je ne connais pas!)
j'ai modifié le header de la page d'envoi comme ceci
Code PHP :
ob_end_clean();
header("Content-Type: text/plain");
header("Connection: close\r\n");
header("Content-Encoding: none\r\n");
ignore_user_abort(true); // optional
ob_start();
echo ('');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush(); // Strange behaviour, will not work
flush(); // Unless both are called !
ob_end_clean(); cela me retourne immédiatement le status 4 et ok (200),puis exécution du reste de mon script .
Sur la page qui déclanche la requête le bouton appel la fonction suivante:
Code Javascript :
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;
}
function request()
{
var xhr = getXMLHttpRequest();
////////////////////////////////
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4 && (xhr.status == 200)) {
alert("termine");
}
};
////////////////////////////////
//envoi de la requete
var id_mail = document.getElementById("id_mail").value;
variable= "&id_mail="+id_mail;
xhr.open("POST","/envoi_mail.php",true);
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send(variable);
} mais le problème est que même si les status sont bons ça me bloque sur cette page et quand je clic sur un lien ça plante le navigateur qui attend la fin du traitement d'envoi des mails.
Si vous pouvez me dire ce qui cloche afin que je corrige mon script ça serait sympa.
Par avance merci.