63 votes

Remplacer la page HTML par du contenu récupéré via AJAX

J'ai une page HTML avec une structure typique:

<html>
<head>
   <script .../>
   <style .../>
</head>
<body>
   content
</body>
<script>
   var success_callback = function(data) {
      // REPLACE PAGE CONTENT & STRUCTURE WITH "data"
   }
   ajax(url, params, success_callback);
</script>
</html>

Pensez-vous que c'est possible ? J'ai déjà essayé de donner de la balise html d'un identifiant et faire $(id).replace(data); , sans succès.

Ne me demandez pas pourquoi, mais c'est ce dont j'ai besoin (je travaille avec un "mashup " constructeur" du site... c'est une longue histoire).

EDIT : j'ai oublié de dire que les scripts dans le contenu reçu, doivent être exécutées, même des scripts externes inclus à l'aide de <script src="...">.

135voto

niutech Points 5023

Le moyen le plus simple consiste à définir le nouveau contenu HTML à l'aide de:

 document.open();
document.write(newContent);
document.close();
 

27voto

shfx Points 441

essayez ceci avec jQuery :

 $('body').load( url,[data],[callback] );
 

En savoir plus sur docs.jquery.com / Ajax / load

11voto

geowa4 Points 17712

Voici comment faire en prototype : $(id).update(data)

Et jQuery : $('#id').replaceWith(data)

Mais document.getElementById(id).innerHTML=data devrait également fonctionner.

EDIT: Prototype et jQuery évaluent automatiquement les scripts pour vous.

7voto

The.Anti.9 Points 7275

Tu pourrais essayer de faire

 document.getElementById(id).innerHTML = ajax_response
 

4voto

Marius Points 27452

Je suppose que vous utilisez jQuery ou quelque chose de similaire. Si vous utilisez jQuery, les éléments suivants devraient fonctionner:

 <html>
<head>
   <script src="jquery.js" type="text/javascript"></script>
</head>
<body>
   content
</body>
<script type="text/javascript">
   $("body").load(url);
</script>
</html>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X