[Résolu] Changer le contenu d'une page html

Changer le contenu d'une page html [Résolu] - HTML/CSS - Programmation

Marsh Posté le 22-03-2011 à 17:02:09    

Voici mon problème. Via la librairie PHP Snoopy, je crée une requête HTTP de type POST qui me retourne une page web. Celle-ci contient une IHM et elle aussi, à la fin de son exécution, est censée envoyer une requête HTTP de type POST et ainsi de suite. Je voudrais que l'IHM de chaque page web soit affichée durant x secondes avant que la requête suivante soit envoyée.
 
J'ai donc utilisé la librairie javascript Prototype et le composant Ajax.request pour construire ma requête POST et l'envoyer, après que x secondes se soient écoulées (via settimeout()). Je reçois bien le code html de la page web mais j'ai un petit soucis pour le faire afficher. J'ai fait ça sur l'événement status = 200 :

Code :
  1. if (200 == transport.status) {
  2.    var aHTMLPage = document.getElementsByTagName('html');
  3.    aHTMLPage[0].innerHTML = transport.responseText;
  4.    transport.reponseText.evalScripts();  // Permet d'interpréter les JS dans le code html reçu et donc de relancer la requête HTTP type POST suivante
  5. }


 
Ca marche pas trop mal mais j'ai constaté que :
1) le code html dans le <head> n'est pas interprété par le navigateur : le <title> ne change pas, c'est toujours celui de la page appelante et le charset déclaré dans <meta> n'a pas l'air d'être pris en compte...
2) les styles définis dans le css pour <body> ne sont pas interprétés alors que ceux pour <html> et les autres balises dans le <body> si :/
 
Auriez-vous une solution?
 
En fait, le but de tout ceci est de pouvoir faire un enchaînement d'affichage de pages web automatisé qui se passent des paramètres entre elles. Je l'avais fait via des requêtes HTTP de type GET et ça marchait très bien mais si j'ai des paramètres trop gros, je vais dépasser la taille limite de l'url. D'où mon idée de faire la même chose mais avec des requêtes POST.
 
Merci :jap:


Message édité par rufo le 23-03-2011 à 11:25:42

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 22-03-2011 à 17:02:09   

Reply

Marsh Posté le 23-03-2011 à 11:06:15    

En cherchant sur le web, j'ai trouvé qq'un qui avait le même pb que moi : http://bytes.com/topic/javascript/ [...] x-response
 
Malheureusement, la solution proposée reste une redirection vers une url mais ça ne tient pas compte du fait que si les paramètres mis dans l'url dépassent la taille acceptée par le navigateur (environ 2000 caractères pour IE a priori, 65535 pour Firefox) ou le serveur (apache, environ 8000 dans la conf de base), ça marche pas :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 23-03-2011 à 11:25:27    

Bon, en poursuivant mes recherches, j'ai trouvé cette solution : http://www.webdeveloper.com/forum/ [...] p?t=235907
 
J'en ai trouvée une autre,que j'ai mise en oeuvre et qui semble marcher correctement, étant parti sur la lib Prototype et non JQuery :

Code :
  1. if (200 == transport.status) {
  2.    document.open();
  3.    document.write(transport.responseText);
  4.    document.close();
  5. }


 
Bizarrement, j'avais essayé avec juste document.write() mais Firefox ne mettait à ramer grave alors qu'en ajoutant le open() et le close(), là, ça va bien... Et même pas besoin de faire le evalScripts() derrière pour interpréter le javascript :)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed