Recup d'une page aspx dans un span. AJAX a la place d'une iframe.

cs_Targos Messages postés 26 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 7 juillet 2008 - 31 mai 2006 à 19:05
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 1 juin 2006 à 00:35
Hello tout le monde.

J'ai un petit probleme, je veux recupérer dans un d'une page html le contenu d'une page aspx.

Pas de probleme j'ai utilisé XMLHttpRequest. La page se charge mais tout les javacripts du menu Asp.net 2.0 n'est pas chargé...
Quand j'appelle directement ma page pas de souci. Cela vient de l'AJAX a priori qui empeche la recup du code pour les menus.

Dans mon ASPX j'ai forcer le clientTarget avec un user_agent de style browser IE6.0 pour etre sur de renvoyer le tout pour un browser..
En mettant une iframe j'ai pas de probleme.... mais je prefereai l'ajax ...

voici le code de la page htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Page sans titre</title>
        <script type="text/javascript" language="javascript">
        function inserturl(divid,url) {
        alert("test");
         var http_request = false;
         if (window.XMLHttpRequest) { // Mozilla, Safari,...
             http_request = new XMLHttpRequest();
             if (http_request.overrideMimeType) {
                 http_request.overrideMimeType('text/xml');
             }
         } else if (window.ActiveXObject) { // IE
             try {
                 http_request = new ActiveXObject("Msxml2.XMLHTTP");
             } catch (e) {
                 try {
                     http_request = new ActiveXObject("Microsoft.XMLHTTP");
                 } catch (e) {}
             }
         }
         if (!http_request) {
             //gros pb
             return false;
         }
         http_request.onreadystatechange = function() 
         {
          if (http_request.readyState == 4) {
              if (http_request.status == 200) {
               document.getElementById(divid).innerHTML = http_request.responseText
               alert(http_request.responseText);
              } else {
               //pb http
                  document.getElementById(divid).innerHTML = ''
              }
          }
         };
         http_request.open('GET', unescape(url), true);
         http_request.send(null);
        }
</script>
</head>

<script type="text/javascript" language="javascript">
     inserturl('decorheader',escape('http://localhost/wtransat/framing/header.aspx'));
</script>

</html>

Merci d'avance !!

targ:-)s

3 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
31 mai 2006 à 23:00
Bonsoir,

Ton problème est tou à fait normal, lors de l'ajout de javascript à la volée suite à une requete Ajax, les scripts javascript ne sont pas executé. Il faut alors que tu parses le content de ta page pour executer les scripts javascript avec la fonction eval() ! Tu peux le faire à la main mais c'est trés lourd. La plupart des framework JavaScript le font, Atlas par exemple le fait trés bien ainsi que beaucoup d'autres Framework, script.aculo.us, dojo, yahoo, ...

PS : j'ai daplacé ton message de
[ www.aspfr.com
] vers
www.javascriptfr.com

<hr />Cyril - MVS - MCP
0
cs_Targos Messages postés 26 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 7 juillet 2008
1 juin 2006 à 00:01
Merci pour ta réponse :)

J'essai de comprendre :p.

Alors il faut que j'exécute les javascripts du code que je récupere via la requete AJAX. Ok. Par contre comment je peux le faire :
  avec la méthode eval sur la ligne document.getElementById(divid).innerHTML = eval(http_request.responseText) ?
Ou avec Atlas donc mais coté .net, donc dans mon ascx.vb, mais il faut certainement que j'installe le framework atlas sur mon serveur....

Merci d'avance :)

targ:-)s
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
1 juin 2006 à 00:35
non un eval(http_request.respnseText) ne fera rien de bien, puisque responseText contiendra à la fois du texte et du javascript, il faut extraire le contenu des balises <script type="text/javascript"> et faut faire un eval sur ce contenu, bref c'est trés chiant à faire.

Atlas, peut le faire tout seul ainsi que simplifier ta requete Ajax ... bien sur il faut installer la dll sur le server, tu peux aussi utiliser d'autres frameworks et la plupart le font aussi ...

<hr />Cyril - MVS - MCP
0
Rejoignez-nous