2010-09-09 4 views
3

Dans le code ci-dessous, j'utilise la fonction jQuery ajax() pour effectuer un appel longpolling. Pendant que la fonction ajax fonctionne, je clique sur le lien pour télécharger Firefox (par exemple) et l'appel ajax s'arrête.L'appel ajax jQuery s'arrête lorsqu'une invite de téléchargement est affichée

Il agit en fait comme si l'appel était réussi, mais ce n'était pas le cas, il a simplement cessé de fonctionner.

Pourquoi est-ce? Je veux fonctionner pour continuer ...

J'ai vu ce problème dans Firefox et Chrome. Je n'ai pas testé d'autres navigateurs.

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"></script> 

    <script type="text/javascript"> 

    function longPoller() { 

     $.ajax({ 
      type: "GET", 
      url: '/long-loading-page.php', /* <?php sleep(5000); ?> */ 
      dataType: 'json', 
      async: true, 
      cache: false, 
      timeout:50000, 

      success: function(data){ 

       alert('success'); 
      }, 
      error: function(XMLHttpRequest, textStatus, errorThrown){ 

       alert('error'); 
      }, 

      complete: function() { 

       alert('complete'); 
       } 

     }); 
    } 


    $(document).ready(function(){ 
     setTimeout(function(){ longPoller() }, 1000); //start the longPoller() function 
    }); 

    </script> 
</head> 
<body> 

    <a href="http://download.mozilla.org/?product=firefox-3.6.9&os=win&lang=en-US">download Firefox! (clicking this link will stop the jQuery ajax call... why?)</a> 
</body> 
</html> 

Répondre

4

Lorsque vous cliquez sur le lien de téléchargement, vous quittez la page, même si ce n'est pas le cas. S'il n'y aurait pas de transfert de fichier, vous verriez la page demandée .. essayez de définir un target="_blank" ou utilisez un iframe comme cible pour le lien.

+0

Merci. Les deux options fonctionnent. Je me demande pourquoi le rappel de succès est déclenché cependant. – koen

+0

Avait besoin de confirmation que ces méthodes fonctionneraient avant que je ne l'ai programmé réellement, merci! – Reimius

Questions connexes