Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1546 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Ajax "async: false" et bug sur Chrome / Safari

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ajax "async: false" et bug sur Chrome / Safari

n°2220724
Hermes le ​Messager
Breton Quiétiste
Posté le 25-02-2014 à 14:30:42  profilanswer
 

Bonjour tout le monde,
 
Soit le code basic utilisant Ajax suivant :
 

Code :
  1. var cpt;
  2. for (cpt = 0; cpt < 20; cpt++)
  3. {
  4.   $.ajax({
  5.             url: 'exec_actions.php',
  6.     type: 'POST',
  7.     data: {var_4_treatment: cpt},
  8.     success: function(response)
  9.     {
  10.  document.getElementById('text_field').value = 'kikou ' + cpt;
  11.             }
  12.     async: false
  13.   });
  14. }


 
Le champ avec l'id text_field n'est pas mis à jour... Le fait d'appeler Ajax avec async à false empêche le rafraichissement le tout élément graphique dans le navigateur.
Cela est vrai dans Chrome et Safari. Dans Firefox par contre, le "bug" n'est pas présent et cela fonctionne.
 
J'ai cherché un peu partout sur internet et la réponse est systématiquement la même : problème connu, le aysnc: false est le mal blablabla...
 
Dommage, car pour faire des progress bars qui sont réellement à jour pour par exemple "loader" plusieurs fichiers, c'est pas bien pratique.... (C'est le moins qu'on puisse dire)  
 
Alors vous allez me dire : c'est possible avec async à true et tel ou tel contournement crade... Merci, je les connais déjá, je sais comment faire. C'est pas l'objet de ce topic.
 
L'objet de ce topic est de savoir si REELLEMENT il n'existe aucune solution avec async: false sur Chrome et Safari.
 
Merci


---------------
Expert en expertises
mood
Publicité
Posté le 25-02-2014 à 14:30:42  profilanswer
 

n°2220796
gatsu35
Blablaté par Harko
Posté le 25-02-2014 à 22:19:00  profilanswer
 

Je vois pas pourquoi tu veux faire du chargement synchrone en Ajax,
Tu pourrais très bien gérer le chargement de plusieurs contenus sans faire une boucle, il suffit simplement que ta méthode se rappelle elle même.

 
Code :
  1. function load(cpt, max, cb) {
  2.    $.ajax({
  3.        url: 'exec_actions.php',
  4.        type: 'POST',
  5.        data: {var_4_treatment: cpt},
  6.        success: function(response)
  7.        {
  8.             document.getElementById('text_field').value = 'kikou ' + cpt;
  9.             if(cpt<max) load(cpt++, max, cb);
  10.             else {
  11.                  if(cb) cb();
  12.              }
  13.         }
  14.        async: true
  15.   });
  16. }
  17. load(0,20, function() {
  18.    console.log("Ayait tout fini" );
  19. });
 

de l'Ajax synchrone c'est de la merde et c'est le mal, et avec ce bout de code tout con, je viens de te montrer que c'est pas compliqué et que tu peux faire des trucs encore plus sexy.

 

il existe en plus pleins de méthodes avec jquery qui te permettent de rendre ça plus sexy.
Le queue, promise and co....

 

Et tu auras la même réponse partout où tu vas, car à partir du moment où tu fais un appel synchrone dans ton navigateur, tout le code est bloqué, idem pour le browser, car sinon ça fait un blocage dégueulasse.
Et essaye de charger un fichier de 5Mo en ajax et reviens nous voir pour dire si le bug ne marche pas sous Firefox :)


Message édité par gatsu35 le 25-02-2014 à 22:22:24

---------------
Blablaté par Harko

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Ajax "async: false" et bug sur Chrome / Safari

 

Sujets relatifs
Erreur AJAX/JSOuvrir un lien réseau "file://" sous google chrome
problème Javascript sous safariFaire repeter une action Google Chrome et Bloc Note
[JQUERY/ASP/ORACLE]TABLE AJAX COLLAPSE PAGINATIONAJAX - Recupérer ID après injection
Petit problème ajax avec JSONAjax formulaire dans une boucle
[Recherche] Web service retournant "true" ou "false"Autocomplétion ajax avec différents champs
Plus de sujets relatifs à : Ajax "async: false" et bug sur Chrome / Safari


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR