Probleme chargement de page et Javascript sous Firefox

Probleme chargement de page et Javascript sous Firefox - HTML/CSS - Programmation

Marsh Posté le 07-02-2008 à 12:39:52    

Bonjour tout le monde.  
 
Je m'arrache les cheveux depuis 24h sur le probleme suivant :  
 
Je suis en train de faire une page de paiement en ligne.
Pour recuperer les reponses des banques afin de la communiquer au client j'utilise une requete AJAX grace au framework prototype.  
Pendant que je cherche a obtenir une reponse de la banque je met un petit gif anime. Bref une petite page pour faire patienter le client.  
 
Je lance mon javascript a partir du OnLoad du Body
 
Et le probleme est que la page s'affiche uniquement à la fin de l'execution du Javascript, alors que sous IE il affiche la page puis il execute le Javascript.
 
Voici un resume de mon code :
 

Code :
  1. <?php
  2. header("Cache-Control: no-cache, must-revalidate" );
  3. header("Pragma: no-cache" );
  4. if(isset($_GET['NUMERO_DOSSIER']) ){ $ref_dos = trim(str_replace(" ", "",$_GET['NUMERO_DOSSIER']));} else{$ref_dos = "";} // Numéro du dossier
  5. if(isset($_GET['acompte'])) { $txtmontant = $_GET['acompte'];} else {$txtmontant = "";} // Montant total du devis :
  6. ?>
  7. <html>
  8. <head>
  9. <title>Paiement sécurisé</title>
  10. <link href="css/style.css" rel="stylesheet" type="text/css">
  11. <script src="javascript/prototype.js" type="text/javascript"></script>
  12. <script src="javascript/scriptaculous.js" type="text/javascript"></script>
  13. </head>
  14. <body bgcolor="#CCCCCC" onLoad="TraitementPaiement()">
  15.   <div id='systemeAttente'>
  16. <img src='images/loader.gif'>Veuillez patienter pendant que nous consultons<br>votre établissement banquaire
  17. </div>
  18. <div id="Message"/>
  19. <script>
  20. reponseOK = 0;
  21. function testReponse(requete)
  22. {
  23. var docXML = requete.responseXML ;
  24. var items = docXML.getElementsByTagName("reponse" );
  25. reponse = items.item(0).firstChild.data;
  26. switch( reponse )
  27. {
  28.  case '3' :
  29.  reponseOK = 1;
  30.  break;
  31.  case '4' :
  32.  reponseOK = 1;
  33.  break;
  34.  default :
  35.  break;
  36. }
  37. }
  38. function Sleep()
  39. {
  40.  var x = 0;
  41. }
  42. function TraitementPaiement()
  43. {
  44. date = new Date();
  45. var timestamp = date.getTime();
  46. while(date.getTime()  < timestamp + 10000 && reponseOK == 0)
  47. {
  48.  var url = "http://www/pel/marti/reponse_paiement.php";
  49.  var param = "ref_dos=<?=$ref_dos?>&txtmontant=<?=$txtmontant?>";
  50.  var myAjax = new Ajax.Request(url,
  51.      {
  52.       asynchronous : false,
  53.       method :'get',
  54.       parameters : param,
  55.       onComplete : testReponse
  56.      }
  57.     );
  58.   setTimeout("Sleep()",100);
  59.   date = new Date();
  60. }
  61. var obj =  document.getElementById("Message" );
  62. var objAttente = document.getElementById("systemeAttente" );
  63. objAttente.style.visibility = "hidden";
  64. switch(reponse)
  65. {
  66.  case '3' :
  67.  obj.innerHTML = "Paiement Accepte";
  68.  Element.hide(obj); new Effect.Appear(obj);
  69.  break;
  70.  case '4' :
  71.  obj.innerHTML = "Paiement Refusé";
  72.  new Effect.Shake(obj);
  73.  break;
  74.  default :
  75.  obj.innerHTML = "Pas de Reponse de la banque";
  76.  break;
  77. }
  78. }
  79. </script>
  80. </body>
  81. </html>


---------------
last.fm-RYM
Reply

Marsh Posté le 07-02-2008 à 12:39:52   

Reply

Marsh Posté le 11-02-2008 à 16:29:55    

Probleme Resolu, pour ceux qui ont la meme merde. Le probleme est que ma requete XMLHttpRequest etait Synchrone. Finalement j'ai utilise l'objet PeriodicalUpdater de prototypejs qui convient parfaitement a ce genre de problematique


---------------
last.fm-RYM
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed