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

AJAX Discussion :

[AJAX] javascript et ajax apres appel div


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 19
    Par défaut [AJAX] javascript et ajax apres appel div
    Salut,

    Je suis nouveau ici et je débute dans l'ajax.

    Je vous explique mon problème :

    J'envoie un formulaire dans un div avec une fonction ajax jusqu'à la rien d'extraordinaire car ca marche, mais dans la page appelée dans le div qui a contrôlé les infos du formulaire, j'ai une inclusion d'un autre page avec une fonction horloge java avec un setTimeout qui doit changer l'heure toute les secondes (normal lol) mais la ca ne fonctionne pas. Par contre quand j'exécute la page seul la fonction se lance bien.

    Code de la page principal.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ...
    <script language="javascript" type="text/javascript" src="fonctions/ajax.js" ></script>
    <?
    echo"<div id=\"formulaire\" style=\"position:absolute; visibility:visible; width:100%; height:100%; top:0; left:0; z-index:2;\">";
    include('formulaire.php');
    echo"</div>";
    ?>
    ...
    Code de la page ajax.js :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    function donnee_get(form1)
    {
    var data1 = "";
    var forma = document.getElementById(form1);
    var elements = forma.elements;
    for(var i=0; i<forma.length; i++)
    {
    data1 += elements[i].name + "=" +escape(elements[i].value);
    if((i+1)<forma.length)
    {
    data1+="&";
    }
    }
    return data1;
    }
    function post_get(fichier, div, method, form)
    {
    var xhr=null;
    var data="null";
    if(form!="null")
    {
    if(method=="GET")
    {
    data=form;
    method="POST";
    }
    else
    {
    data = donnee_get(form);
    }
    }
    if (window.XMLHttpRequest)
    {
    xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhr.open( method, fichier, false);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send(data);
    if (document.getElementById)
    {
    document.getElementById(div).innerHTML=xhr.responseText;
    }
    else
    {
    if (document.layers)
    {
    document.div.innerHTML=xhr.responseText;
    }
    else
    {
    document.all.div.innerHTML=xhr.responseText;
    }
    }
    }

    Code de la page formulaire php :
    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
     
    <?
    if(isset($_POST['login']) && isset($_POST['password']))
    {
    ...
    include('horloge.php');
    ...
    }
    else
    {
    ...
    <form id="formulaire1" name="formulaire1" method="post" action="javascript:post_get('formulaire.php', 'general', 'POST', 'formulaire1');" style="margin:0px; padding:0px;">
    ...
    </form>
    ...
    }
    ?>

    Code de la page horloge.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script language="javascript" type="text/javascript" src="fonctions/horloge.js" ></script>
    <table width="100%" height="40" border="0" cellspacing="0" cellpadding="0" background="images/structure/barre_haute.png">
      <tr>
        <td id="td_header">&nbsp;</td>
        <td id="horloge" width="100" style="color:#FFFFFF; font-size:18px; font-weight:bold;">&nbsp;</td>
      </tr>
    </table>
    Code de la page horloge.js :
    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
    function horloge(idw)
    {
    var idvalue=idw;
    var today=new Date();
    var heuresimple="";
    h = today.getHours();
    m = today.getMinutes();
    s = today.getSeconds();
            if(h<10)
       { h = '0'+h; }
            if(m<10)
       { m = '0'+m; }
            if(s<10)
       { s = '0'+s; }
    heuresimple = ''+h+' : '+m+' : '+s+'';
    document.getElementById(idvalue).innerHTML = heuresimple;
    setTimeout('horloge(\'horloge\')',1000);
    }
    setTimeout('horloge(\'horloge\')',10);
    Donc si quelqu'un aurai une suggestion a mon problème ca serai bien car pour le moment j'ai rien trouvé sur google qui pourrai m'aider.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour et bienvenue sur Developpez.com

    si le script de ton horloge est récupéré est inclus dans la page via Ajax, il est normal qu'il ne soit pas interprété directement.
    As-tu le ce point de la FAQ ?

    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 19
    Par défaut
    Merci pour ton aide, j'ai trouvé une solution pour le eval() grace a cette page :
    http://www.xorax.info/blog/programma...l-global.html#

    Du coup mon script ajax.js ressemble a ca :
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    function donnee_get(form1)
    {
    var data1 = "";
    var forma = document.getElementById(form1);
    var elements = forma.elements;
    for(var i=0; i<forma.length; i++)
     {
     data1 += elements[i].name + "=" +escape(elements[i].value);
      if((i+1)<forma.length)
      {
      data1+="&";
      }
     }
    return data1;
    }
    function post_get(fichier, div, method, form)
    {
    var xhr=null;
    var data="null";
    if(form!="null")
    {
    if(method=="GET")
    {
    data=form;
    method="POST";
    }
    else
    {
    data = donnee_get(form);
    }
    }
    if (window.XMLHttpRequest)
    {
    xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhr.open( method, fichier, false);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send(data);
    if (document.getElementById)
    {
     var div = document.getElementById(div);
     div.innerHTML = xhr.responseText;
     var allscript = div.getElementsByTagName('script');
     for(var i=0;i< allscript.length;i++){eval(allscript[i].text);}
    }
    else
    {
    if (document.layers)
    {
     var div = document.div.innerHTML;
     div.innerHTML = xhr.responseText;
     var allscript = div.getElementsByTagName('script');
     for(var i=0;i< allscript.length;i++){eval(allscript[i].text);}
    }
    else
    {
     var div = document.all.div.innerHTML;
     div.innerHTML = xhr.responseText;
     var allscript = div.getElementsByTagName('script');
     for(var i=0;i< allscript.length;i++){eval(allscript[i].text);}
    }
    }
    }
    Donc pour le moment pour moi c'est résolu mais que a moitié, car bugg avec IE (on va me dire comme d'habitude d'ailleurs lol)

    voici la ligne qui porte probleme : var allscript = div.getElementsByTagName('script');

    donc si quelqu'un a une solution pour ie ca serai cool

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    C'est la même solution
    En plus claire dans la FAQ ...
    Sinon, tu peux virer les if de la fin il ne servent à rien.
    Utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var div = document.getElementById(div);
    qui fonctionne dans tous les cas ...

    EDIT : par contre, il faut remplacer le 2° div ci-dessus par l'id du div.
    Une même variable ne peut pas représenter à la fois un id ( = string) et l'objet lui-même (= object)

    A+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 19
    Par défaut
    Merci E.Bzz pour ton aide

    j'ai fait le petit changement, dont voici le 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
    <script type="text/javascript">
    function donnee_get(form1)
    {
    var data1 = "";
    var forma = document.getElementById(form1);
    var elements = forma.elements;
    for(var i=0; i<forma.length; i++)
     {
     data1 += elements[i].name + "=" +escape(elements[i].value);
      if((i+1)<forma.length){data1+="&";}
     }
    return data1;
    }
    function post_get(fichier, div, method, form)
    {
    var xhr=null;
    var data="null";
     if(form!="null")
     {
      if(method=="GET")
      {
      data=form;
      method="POST";
      }
      else{data = donnee_get(form);}
     }
     if (window.XMLHttpRequest){xhr = new XMLHttpRequest();}
     else if (window.ActiveXObject){xhr = new ActiveXObject("Microsoft.XMLHTTP");}
    xhr.open( method, fichier, false);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send(data);
    var c = document.getElementById(div);
    c.innerHTML = xhr.responseText;
     
    var mesScripts = document.getElementById(div).getElementsByTagName("script");
    for (var i=0; i<mesScripts.length; i++) {eval(mesScripts[i].innerHTML);}
    }
    </script>
    mais j'ai toujours un problème avec internet explorer qui ne le prend pas en compte cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(var i=0; i<mesScripts.length; i++){eval(mesScripts[i].innerHTML);}
    voici l'erreur retourné :
    Détails de l’erreur de la page Web

    Message*: Cet objet ne gère pas cette propriété ou cette méthode
    Ligne*: 36
    Caractère*: 42
    Code*: 0
    URI*: xxxxxxxxxxxx
    Si tu avais une idée car la je sèche complet, j'ai fait plein de forum et sans résultat ???

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 19
    Par défaut
    Bon bin j'ai trouvé le problème, en fait c'est que j'avais pas appelé la fonction de mon horloge dans la page principale (j'ai supprimé le include dans ma page formulaire.php) et la youpiiiii. Du coup ca marche maintenant sur tout les navigateurs

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

Discussions similaires

  1. Interpréter javascript après appel ajax
    Par Monico dans le forum jQuery
    Réponses: 14
    Dernier message: 26/10/2009, 10h40
  2. exécution javascript après appel ajax
    Par Gaani dans le forum jQuery
    Réponses: 3
    Dernier message: 21/09/2009, 16h56
  3. appel de javascript impossible dans page appelée en ajax
    Par brazilia28 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/08/2007, 10h48
  4. [AJAX] Liens en AJAX/Javascript
    Par zadlaure dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/06/2007, 10h21
  5. [Ajax] Le javascript de la page appellée ne fonctionne plus
    Par Kernald dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/02/2007, 15h16

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