74 votes

Requête Ajax avec JQuery sur la page de décharger

Je suis en train de faire ceci:

$(window).unload( function () { 

$.ajax({
    type: "POST",
    url: "http://localhost:8888/test.php?",
    data: "test",
    success: function(msg){
         alert( "Data Saved: " + msg );
    }
}); 
alert (c);
});

Cependant, le succès d'alerte ne s'affiche jamais, ni cette demande semble être de même frappant le serveur. Ce que je fais mal?

83voto

Nate B Points 4968

Je crois que vous devez en faire la demande synchrone à la place (c'est asynchrone par défaut) à l'aide de l' async : false paramètre.

EDITION avril 2013

Il est important de noter que l' async: false option est déconseillée pour une utilisation avec jqXHR. Vous devez utiliser le succès/complete/erreur de paramètres à fournir des fonctions pour gérer la réponse de l'appel ajax lors de la spécification async: false.

Plus peut-être lire à ce sujet dans la documentation de jQuery .ajax() fonction.

22voto

Colour Blend Points 3343

Essayez de l'appeler avec async = false;

jQuery.ajax({url:"http://localhost:8888/test.php?", async:false})

Je l'ai juste essayé.

2voto

Scott Evernden Points 17858

Peut-être que vous auriez plus de succès à l'aide de l' onbeforeunload événement à la place?

   $(window).bind('beforeunload', ...

0voto

Marek Karbarz Points 14870

Votre fonction et l'appel Ajax ont l'air bien, donc je suppose que la fenêtre de votre navigateur est fermé avant l'appel ajax a le temps d'aller sur le serveur et à l'arrière. L'appel ajax pourrait retourner quelque chose quand la fenêtre se ferme, essayez d'ajouter de la fonction d'erreur à votre appel ajax pour voir si c'est le cas:

error: function (xhr, textStatus) {
    alert('Server error: '+ textStatus);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X