2010-12-15 52 views
0

Je dois exécuter un code lorsque l'utilisateur essaie de partir est simplement un simple appel au serveur informant qu'il doit supprimer un fichier, il ne fait aucune réponse mais le système ne '' t appel.Exécuter un appel AJAX sur la fonction de déchargement

    $(window).unload(function(){ 
          alert(1) 
          window.key = document.getElememtsByTagName('body')[0].getAttribute('key'); 
          catcher('clearBt');//The catcher makes the AJAX call like i show below. 
        }); 
//This is the call to the server. 
     phone.open(method, address, true); 
     phone.setRequestHeader("Content-type", 'application/x-www-form-urlencoded'); 
     phone.send(reqStr); 

Je l'ai essayé avec onbeforeunload pour, mais le résultat a été le même ...

+0

Obtenez-vous une erreur JavaScript? Vous aurez besoin d'un point-virgule après l'alerte (1). – Chocula

+0

Je n'ai rien c'est le problème ... – hidura

Répondre

0

AJAX est asynchrone par défaut et se terminera par le déchargement du document. Essayez de l'exécuter en tant qu'appel synchrone à la place.

Vous devez changer cela

phone.open(method, address, false /*synchronous*/); 

et la page doit attendre la demande à la fin.

+0

Mais la page ne va pas attendre à la réponse? – hidura

+0

Il devrait le faire. Synchrone signifie que le script attendra jusqu'à ce que la requête soit terminée. Et tant que vous ne retournez pas le document, il doit toujours être actif. – wazz3r

1

Très bien, j'ai eu le même problème avec le contrôle Magento. Je l'ai résolu de cette façon

var responseCancel= jQuery.ajax({ 
     url:'<?php echo Mage::getBaseUrl() . 'checkout/onepage/callWsCancelOrder'; ?>', 
     cache: false, 
        async: false 
     }).responseText; 

Merci