2010-08-20 39 views
35

Estoy bastante seguro de que esta es una pregunta común, pero soy bastante nuevo en JS y tengo algunos problemas con esto.Cargar contenido del archivo HTML en Div [sin el uso de iframes]

Me gustaría cargar x.html en un div con id "y" sin usar iframes. Intenté algunas cosas, busqué, pero no encuentro una solución decente para mi problema.

Preferiría algo en JavaScript si fuera posible.

Gracias de antemano a todos!

+0

¿Se puede usar jQuery? –

+0

Si esa es la única forma de hacerlo, creo que estaría bien. Nunca utilicé jQuery ... – MapWeb

+1

No es la única * manera *, pero abstrae la mayor parte de la complejidad que presenta un problema como este. Además, recuerde que debido a problemas de seguridad no puede cargar HTML desde otros sitios (nombres de dominio diferentes) con Javascript –

Respuesta

4

Sugiero entrar en una de las bibliotecas de JS que hay. Aseguran la compatibilidad para que pueda comenzar a funcionar muy rápido. jQuery y DOJO son realmente geniales. Para hacer lo que estamos tratando de hacer en jQuery, por ejemplo, sería algo parecido a esto:

<script type="text/javascript" language="JavaScript"> 
$.ajax({ 
    url: "x.html", 
    context: document.body, 
    success: function(response) { 
     $("#yourDiv").html(response); 
    } 
}); 
</script> 
58

jQuery:

$("#y").load("x.html"); 
+13

jQuery es excelente y lo hace todo. – rdlowrey

+2

Por qué esta respuesta no está marcada como respondida, ¡para mí funcionó como un amuleto! Es sorprendente que solo se necesita jquery para crear una página dinámica. – Edgar

+6

@ EdgarsŠturms Puede funcionar y ser conciso, pero no es la respuesta correcta porque la pregunta no solicitó una solución de jQuery. – Matt

69

Wow, de todas las respuestas marco-promocionales y Pensarías que esto es algo que JavaScript hizo increíblemente difícil. No es realmente

var xhr= new XMLHttpRequest(); 
xhr.open('GET', 'x.html', true); 
xhr.onreadystatechange= function() { 
    if (this.readyState!==4) return; 
    if (this.status!==200) return; // or whatever error handling you want 
    document.getElementById('y').innerHTML= this.responseText; 
}; 
xhr.send(); 

Si necesita IE < 8 compatibilidad, hacer esto primero para llevar a los navegadores a la velocidad:

if (!window.XMLHttpRequest && 'ActiveXObject' in window) { 
    window.XMLHttpRequest= function() { 
     return new ActiveXObject('MSXML2.XMLHttp'); 
    }; 
} 

Tenga en cuenta que el contenido de la carga en la página con los guiones hará que el contenido invisible para los clientes sin JavaScript disponible, como los motores de búsqueda. Úselo con cuidado y considere las inclusiones del servidor si todo lo que desea es colocar datos en un archivo común compartido.

+13

Esta es una buena respuesta porque la pregunta no era sobre JQuery. Hay algunos casos en los que * no * puede usar JQuery o algún marco para hacer esto. –

+0

Extraño, aparece el error 'NS_ERROR_DOM_BAD_URI: acceso al URI denegado restringido' – Costa

+3

@Costa: parece que está intentando hacer una solicitud XMLHttpRequest entre sitios. Eso no se permite por razones de seguridad, a menos que el sitio de destino entre. – bobince

1
document.getElementById("id").innerHTML='<object type="text/html" data="x.html"></object>'; 
Cuestiones relacionadas