IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Bug de prototype ? [Prototype]


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de youtch
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 94
    Par défaut Prototype.js: new insertion par ajax+ element.update = bug
    Bonjour, j'ai essayé de créer une 'fenêtre' avec HTML et Prototype, puis y insérer du contenu HTML immédiatement : Pas de problème pour créer dynamiquement un Div de style 'position:absolute' avec 'New Insertion.Element(...), mais si j'inclus du contenu dans ce Div immédiatement dans le même script avec Update(Element...) ça ne marche pas !
    Mais si j'intercalle un affichage de fenêtre alert(....) pas de pb, l'alert s'affiche, puis après la fenêtre est mise à jour !!! Bug de prototype qui peut être contourné ou pas ?
    Si vous comprenez pas, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
     
    // CAS 1 :
    // => CA MARCHE BIEN : On obtient '2e insertion dans mon div'
     
    function aff_dialog_stat(nom_fen)  // Fonction créa et d'affichage des fen dynamique, pas de rechargement si elle existe déjà
    {	if($(nom_fen)==null) {new Insertion.Bottom('td_contenu',"<div id='monparagraf'>1ere insertion dans le div... !</div>");}
    	else {	alert("Pas besoin de relancer insertion")	}
    }
    function aff_dialog_dyn(nom_fen) // Fonction créa et d'affichage des fen dynamique, rechargement si elle existe déjà
    {	if($(nom_fen)==null) {aff_dialog_stat(nom_fen);}
    	else
    	{	Element.remove(nom_fen); 
    		aff_dialog_stat(nom_fen);}
    }
     
    function lancer() 
    {
    	aff_dialog_stat('monparagraf'); // Création de la fen qui est rafraichie à chaque ouverture, affichant les erreurs trouvées
    	Element.update('monparagraf',"<div id='enreg_valid'>2e insertion dans mon div</div>");
    }   
     
     
     
    // CAS 2 :
    // => CA MARCHE PAS : On obtient le contenu de serv_insertion_1.php : 'salut le monde merveilleux de JS !'
     
    function aff_dialog_stat(nom_fen)  // Fonction créa et d'affichage des fen dynamique, pas de rechargement si elle existe déjà
    {	if($(nom_fen)==null) 
    	{
    		new Ajax.Request('serv_insertion_1.php',{ // Contient <div
    			method: 'get',
    			parameters: '',	onSuccess: function(requester) {
    					new Insertion.Bottom('td_contenu',requester.responseText);
    				}
    			//,onComplete: function(requester) {  Element.update('monparagraf',"<div id='enreg_valid'>2e insertion dans mon div</div>");}
    		});
    	}
    }
     
    function lancer() 
    {
    	aff_dialog_stat('monparagraf'); // Création de la fen qui est rafraichie à chaque ouverture, affichant les erreurs trouvées
    	Element.update('monparagraf',"<div id='enreg_valid'>2e insertion dans mon div</div>");
    }
    Et aussi, évidemment le "serveur" php qui va avec tout ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php header('Content-type: text/html; charset=ISO-8859-1'); 
     
    echo "<div id='monparagraf'>1ere insertion dans le div... </div>";
    ?>

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Par défaut
    Salut !

    Alors, si je comprends bien ton code...

    Dans ton deuxième cas tu lances une requête asynchrone à ton serveur. Pendant que ta requête se fait et que le serveur t'en renvoie une réponse tu tentes déjà de mettre à jour ton élément. Or, il n'existe pas encore car la réponse du serveur n'est pas encore là. Résultat des courses (et c'est pas peu dire ) : tu dois avoir une exception en plus, non ?

    Soit dit en passant, tu as l'air d'utiliser une bien vieille version de prototype.js, non ?

  3. #3
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par Oscar Hiboux Voir le message
    il n'existe pas encore car la réponse du serveur n'est pas encore là
    + 1 ^^

    Si tu remontes l'appel à Element.update dans ta fonction de callback (en l'occurrence : la fonction anonyme associée à onSuccess), ça ne devrait plus poser de problème.

  4. #4
    Membre confirmé Avatar de youtch
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 94
    Par défaut
    J'ai compris ! Effectivement la requête est asynchone, je n'avais pas pensé à utiliser le retour onSuccess ! Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bug ie7 . Objet javascript et prototype
    Par Sourrisseau dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/04/2009, 14h19
  2. [Prototype] Binding et prototype primo et bis et terzio
    Par Bownobo dans le forum Bibliothèques & Frameworks
    Réponses: 17
    Dernier message: 16/09/2008, 17h14
  3. [SOAP] Prototype de méthode mal interprété par VS, BUG ?
    Par arnolem dans le forum Services Web
    Réponses: 9
    Dernier message: 14/01/2008, 18h04
  4. [Prototype] Mise à jour dans un textarea bug sur IE
    Par elvan49 dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 24/10/2007, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo