Exécution d'un PHP via Ajax on Unload

J'essaie de faire exécuter un script php lorsque l'utilisateur navigue loin de la page. C'est ce que j'utilise actuellement:

function unload(){ var ajaxRequest; // The variable that makes Ajax possible! try{ // Opera 8.0+, Firefox, Safari ajaxRequest = new XMLHttpRequest(); } catch (e){ // Internet Explorer Browsers try{ ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ // Something went wrong window.location = "unsupported.html"; return false; } } } ajaxRequest.open("GET", "ajax/cancelMatch.php", true); ajaxRequest.send(null); } 

Grâce à FireBug, il semble qu'il appelle la fonction ouverte de l'objet ajaxRequest, mais le PHP ne fonctionne pas! Est-ce quelque chose à voir avec le fait qu'il l'appelle sur le déchargement de la page?

De plus, j'ai trouvé un événement appelé onbreforeload, mais je ne peux pas comprendre comment le fonctionner, s'il est encore disponible.

Vous devez vous assurer que ignore_user_abort() est défini sur true au plus tôt. S'il y a un paramètre par défaut, cela serait mieux.

"Onbeforeunload" ne fonctionnera pas dans tous les navigateurs. Comme le dit chacha102, vous devez vous assurer que le script PHP n'arrête pas le second ignore_user_abort() la requête est terminée – ignore_user_abort() est un bon moyen de vous assurer.

En outre, vous voudrez peut-être essayer quelque chose de plus simple. L'injection d'une image dans la page pour déclencher la demande pourrait être tout ce que vous devez faire.

 function onunload() { var i = document.createElement("img"); i.src = "ajax/cancelMatch.php?" + Math.random(); document.appendChild(i); return; }