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

JavaScript Discussion :

[AJAX] innerHTML, setInnerHTML


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Invit�
    Invit�(e)
    Par d�faut [AJAX] innerHTML, setInnerHTML
    Bonjour � tous!

    Apr�s 3 jours de d�b�cle, je m'en remets � vous.
    Comme signifi� dans le titre, mon probl�me concerne le rechargement d'une portion de page contenant du Javascript, gr�ce � AJAX.

    Je m'explique :
    J'ai un formulaire d'ajout de chansons (toujours les m�me projets !!). Lors de la validation de celui-ci, j'utilise XMLHttpRequest qui est cens� faire l'insertion en BD et recharger le contenu d'un DIV. Ce DIV contient � l'origine une table, qui comme vous l'aurez compris contient la liste des chansons.
    Donc, lorsque je valide le formulaire, je fais appel � une fonction javascript qui s'occupe d'ins�rer en BD la nouvelle chanson saisie dans le formulaire et de recharger ma table avec les nouvelles valeurs (par un nouveau 'select' en BD).

    Fonction JS ex�cut�e lors de la validation :
    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
     
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
         httpRequest = new XMLHttpRequest();
         if (httpRequest.overrideMimeType) {
              httpRequest.overrideMimeType('text/xml');
         }
              }
         else if (window.ActiveXObject) { // IE
              try { httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); }
              catch (e) {
                   try { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); }
                        catch (e) {}
              }
         }
         if (!httpRequest) {
              alert("Abandon : blablabla...");
              return false;
         }
    httpRequest.open('POST', 'insert.php', false);
         httpRequest.onreadystatechange = function() {
              if (httpRequest.readyState == 4) {
                   if (httpRequest.status == 200) {
    setInnerHTML(document.getElementById('reload_div'), httpRequest.responseText);
                   } else { alert('Un problème est ...'); }
              }
    Contenu du fichier 'insert.php' :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php header('Content-type: text/html; charset=iso-8859-1');
    mysql_connect($host,$user,$password) or die ("Erreur de conn..");
    mysql_select_db ($database) or die ("Erreur de co");
     
    $req = "insert into ...";
    	if ( !mysql_query ($req)) {
    		echo "Erreur lors de l'insertion de ...;
    	} else {
    		require_once "affich_table.php"; }
    ?>
    Le fichier 'affich_table.php' �tablit la structure d'un tableau avec les donn�es r�cup�r�s en BD.

    Le souci, c'est que j'ai deux fonctions JS (dans 'affich_table.php') qui permettent le tri en temps r�el de la table et l'affichage d'infobulles. Ces deux fonctions utilisent jQuery.
    Quant j'arrive sur la page initialement, le tri et les infobulles marchent correctement. Lorsque je r�alise une premi�re insertion et que ma table est recharg�e, ces deux fonctions ne fonctionnent plus.

    Mon probl�me revient donc � l'ex�cution de code JS au travers de la fonction J'ai lu �norm�ment de discussion qui traitent de ce sujet. Malheureusement, j'ai n'ai toujours pas de solutions et je suis � pr�sent compl�tement perdus.


    setInnerHTML devait �tre la fonction miracle, qui permettait de 'mettre � jour' un div en prenant en compte le code javascript. Mais cela ne fonctionne pas.
    J'ai essay� �galement de recharger uniquement le contenu de la table, placer dans les DIV gr�ce � 'innerHTML' et ensuite de rapell� directement mes fonctions JS. sans succ�s...
    Quelqu'un peut m'expliquer la fonction append() propre � jQuery, qui semblerait �tre une solution ?


    J'ai besoin d'aide l� ...
    Help Me Please...

  2. #2
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Tout d'abord, une question qui n'a rien � voir, mais si tu utilises jQuery, pourquoi tu ne t'en sers pas pour faire une requ�te Ajax ???

    Sinon, pour ton probl�me (et tu vas voir, c'est quand m�me li�), lorsque tu mets � jour ta page en ins�rant affich_table.php, les scripts ne sont pas ex�cut�s (surtout en exploitant le responseText !) il me semble, donc plus de tri, plus d'infobulle...

    Enfin, une requ�te Ajax avec jQuery �value lui automatiquement les scripts par d�faut...
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  3. #3
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Pour info, ta fonction jQuery :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    $.post({
    url: 'insert.php',
    datatype: 'html',      même pas nécessaire, mais pour rassurer !
    success: function(reponsehtml){
        $("#reload_div").html(reponsehtml);
      }
    });
    Et c'est tout...
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  4. #4
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par d�faut
    Tu utilises la fonction setInnerHTML de Fremy?

    Si oui, regarde ici

    Est-ce que tu peux �tre sur que dans tout le framework jQuery, il n'y a pas une fonction �crite comme il ne faut pas? ^^

  5. #5
    Invit�
    Invit�(e)
    Par d�faut
    Bovino >> Tout d'abord, une question qui n'a rien � voir, mais si tu utilises jQuery, pourquoi tu ne t'en sers pas pour faire une requ�te Ajax ???

    Si j'avais su .... !!! En effet, avec responseText, le contenu JS n'est pas pris en compte, donc pas d'infobulles ni de tri de table apr�s le premier rechargement.
    Je vais donc essayer avec JQuery pour faire de l'AJAX, quand tout fonctionnera j'essayerais de comprendre!

    DoubleU >> Tu utilises la fonction setInnerHTML de Fremy?
    En effet !! je pensais que c'�tait la solution miracle, mais �a ne marche pas (m�me apr�s la pirouette de la d�finition des fonctions).


    Merci � vous 2! Je teste...

  6. #6
    Invit�
    Invit�(e)
    Par d�faut
    Je suis d�sol� Bovino, mais la fonction Ajax ne fonctionne pas : ma table ne se met pas � jour..
    J'ai essay� ton code et �a �galement :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    jQueryVarNoConflict.ajax({
         type: "POST",
         url: "insert.php",
         data: "lib_r=" + param1 + "&desc=" + type,
         success: function(reponsehtml){
            jQueryVarNoConflict("#reload_div").html(reponsehtml);
         }
    });
    Une id�e ??

  7. #7
    Invit�
    Invit�(e)
    Par d�faut
    Bonjour tout le monde.

    Finalement, j'ai r�ussi ce que je voulais faire (total temps pass� : 43heures !!! , tr�s f�ch�).. Je pr�cise que je n'ai pas pu mettre en �uvre la solution recherch�e en d�but de post.
    J'explique ma "solution" : j'ai utilis� les diverses fonctions du plugin pour refaire tout le cheminement ex�cut� lors de l'initialisation de l'objet. Ce plugin est bas� sur un cache (initialis� lors de la phase de construction de l'objet).

    J'ai d�finis un �venement clic sur un bouton. Lors du clic sur ce bouton, une ligne est ajout�e au tableau HTML pr�sent sur le premier slide, puis une fonction r�cup�re la ligne html ajout�e et l'ajoute au cache du plugin (cache total puisque celui-ci est divis� car le tableau poss�de un affichage par page). Je r�utilise ensuite les fonctions pour mettre en forme le cache sur le slide1.
    Voil�, je pense pas que �a serve � grand chose (d'�u les guillemts � solution), mais bon, sait-on jamais....

    Sinon, personne n'a d'id�es pour le probl�me lors de la phase d'initialisation (constructeur) entre IE et Firefox??
    Merci � tous !

    EDIT : Merci pour ta proposition Bovino.

  8. #8
    Invit�
    Invit�(e)
    Par d�faut
    Pour le probl�me du constructeur, il semblerait que ce soit une seule partie de mon code qui ne fonctionne pas, et plus pr�cis�ment cette ligne :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    var nb_occ = document.forms['formAjout'].elements['libelle_form'].value.length;
    'document.all' ne fonctionne pas non plus, ni 'document.getElementById'...
    Auriez-vous une id�e pourquoi ??

  9. #9
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    document.forms['formAjout'].elements['libelle_form']
    libelle_form est-il unique ?
    C'est quoi comme balise ?
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  10. #10
    Invit�
    Invit�(e)
    Par d�faut
    libelle_form est unique et correspond � un input type="text"

  11. #11
    Invit�
    Invit�(e)
    Par d�faut
    Bon, plus de r�ponse, je clos le sujet.

    Merci � tous

Discussions similaires

  1. [AJAX] Ajax, innerHTML et fonction javascript - solution ?
    Par gouroulubrik dans le forum G�n�ral JavaScript
    R�ponses: 8
    Dernier message: 25/03/2008, 21h35
  2. [AJAX] Ajax, innerHTML et variable javascript
    Par philippejuju dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 11/01/2007, 11h30
  3. [AJAX] innerHTML : code alt�r�
    Par avogadro dans le forum G�n�ral JavaScript
    R�ponses: 13
    Dernier message: 23/08/2006, 15h35
  4. [AJAX] innerHTML et IE
    Par gmonta31 dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 16/05/2006, 11h12
  5. AJAX + Innerhtml + img => Bug sous IE
    Par GregPeck dans le forum Langage
    R�ponses: 12
    Dernier message: 07/02/2006, 17h43

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