2009-01-27 22 views
61

tengo una página HTML con una estructura típica:página HTML con el contenido recuperado a través de AJAX

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

¿Cree que es posible? Ya he intentado darle una identificación a la etiqueta html y hacer $(id).replace(data); sin éxito.

No me preguntes por qué, pero eso es lo que necesito (estoy trabajando con un sitio especial de "generador de mashups" ... es una larga historia).

EDITAR: Olvidé decir que scripts en el contenido recibido tienen que ser ejecutados, incluso scripts externos incluido al usar <script src="...">.

+3

estaría muy interesado en saber más acerca de los requisitos. No puedo pensar en nada que requiera tal cosa. –

+1

que biblioteca js estás usando? volver a incluirlo. – geowa4

Respuesta

7

Usted podría intentar hacer

document.getElementById(id).innerHTML = ajax_response 
11

es como se hace en Prototype aquí: $(id).update(data)

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

Pero document.getElementById(id).innerHTML=data debería funcionar también.

EDITAR: Prototype y jQuery evalúan automáticamente los scripts.

4

Estoy asumiendo que está usando jQuery o algo similar. Si está utilizando jQuery, entonces el siguiente debería funcionar:

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

¿No puedes tratar de sustituir el contenido del cuerpo con el manejador de document.body?

si su página es la siguiente:

<html> 
<body> 
blablabla 
<script type="text/javascript"> 
document.body.innerHTML="hi!"; 
</script> 
</body> 
</html> 

sólo tiene que utilizar el document.body para reemplazar el cuerpo.

Esto funciona para mí. Todo el contenido de la etiqueta BODY se reemplaza por el innerHTML que especifique. Si necesita incluso cambiar la etiqueta html y todos los elementos secundarios, debería verificar qué etiquetas del 'documento'. son capaces de hacerlo

Un ejemplo de secuencias de comandos con javascript en su interior:

<html> 
<body> 
blablabla 
<script type="text/javascript"> 
var changeme = "<button onClick=\"document.bgColor = \'#000000\'\">click</button>"; 
document.body.innerHTML=changeme; 
</script> 
</body> 

De esta manera usted puede hacer javascript scripting dentro del nuevo contenido. No olvides escapar todas las comillas dobles o simples, o no funcionará. escaparse en javascript se puede hacer atravesando su código y poniendo una barra invertida delante de todas las frases simples y dobles.

Ten en cuenta que las secuencias de comandos del lado del servidor como php no funcionan de esta manera. Como PHP es una secuencia de comandos del lado del servidor, debe procesarse antes de que se cargue una página.Javascript es un lenguaje que funciona en el lado del cliente y, por lo tanto, no puede activar el reprocesamiento del código php.

+0

Sí, está casi en lo cierto, pero las secuencias de comandos externas incluidas con un

Cuestiones relacionadas