Todos/as hemos leído el Tutorial de AJAX. Siempre tuve ganas de poder usar el ejemplo en un proyecto, pero nunca lo he intentado usar por ser intrusivo. Pero el otro día leyendo la documentación de jQuery me encontré con una cosa.
En este tip os voy a mostrar qué fácil es cargar documentos externos HTML con jQuery de forma no intrusiva.
Empezaremos creando una página HTML con un menú de navegación. Una lista normal a la que pondremos como identificador: "nav"
Código :
<ul id="nav"> <li><a href="uno.htm">Enlace Uno</a></li> <li><a href="dos.htm">Enlace Dos</a></li> <li><a href="link.htm">Otro link</a></li> <li><a href="1337.htm">1337</a></li> <li><a href="creacionismo.htm">iDIotas</a></li> </ul>
Y un contenedor donde cargaremos el HTML externo en este caso un div con id show:
Código :
<div id="show"></div>
Pero este código HTML es suficiente para que funcione, hace falta jQuery. Lo primero que hacemos es bajarnos la última versión de aquí (comprimido) y lo colocamos en nuestra página entre las etiquetas head así:
Código :
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>
Falta colocar el script que hará funcione, entre etiquetas <script> que es este:
Código :
<script type="text/javascript"> $(document).ready(function(){ $("#nav a").each(function(){ var href = $(this).attr("href"); $(this).attr({ href: "#"}); $(this).click(function(){ $("#show").load(href); }); }); }); </script>
La "magia" del código está en $("#show").load(href);. Funciona parecido al include() de PHP. Primero seleccionamos el lugar donde se cargará el contenido y luego el contenido a cargar. (Aquí la documentación de jQuery). En nuestro caso, al hacer click en los elementos a que estén incluidos en #nav, #show se cargará las páginas a las que enlazan éstas.
Aquí el ejemplo funcionando.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por ryuz el 14 de Julio de 2007
Código :
Por Lunatic Lycanthrop el 14 de Julio de 2007
Buen tip
Por RattaMono el 16 de Julio de 2007
Por lo demás, muy buen tip para partir en lo "oculto" de jQuery.
Por jst! el 18 de Julio de 2007
Buen Tip!..gracias
Por El Mooorsa el 19 de Julio de 2007
Por Alfonso el 19 de Julio de 2007
Chile
Por Israel reyes el 06 de Agosto de 2007
Por flashreloco el 06 de Agosto de 2007
Por el 28 de Agosto de 2007
Por malder el 29 de Agosto de 2007
muy buen tip me lo guardo gracias
Por The Fricky! el 29 de Agosto de 2007
J0h :
Simplemente coloca la dirección de tu php en el link:
Código :
Por mixtacho el 18 de Septiembre de 2007
Muchas gracias
Por Mike el 08 de Octubre de 2007
pero quisiera cargar los archivos html dinamicamente en un div debajo del menu es decir al hacer clik en el menu que se cargue en un mismo div
Gracias
Por gonzalo el 05 de Noviembre de 2007
lo otro
no me funciona..
Por jaime el 16 de Noviembre de 2007
Por Vidsoe.com el 28 de Noviembre de 2007
Mike_blog: para cargar en el mismo div simplemente cambia el #show del script por #nav.
jaime_blog: para que se cargue directamente al entrar a la pagina seria asi:
$(document).ready(function(){
$("#show").load('pagina.html');
});
Claro que esto deshabilita el que tome dinamicamente el href del link y lo cargue en el div.
Para ambos casos deberan usar en los links algo asi como:
href="#"
onclick="$('#show').load('pagina.html');
Por aldo el 28 de Enero de 2008
Por ladeld el 08 de Febrero de 2008
Tengo un archivo php donde se nuestra los datos de una base de datos en una tabla.
La tabla tiene efetos jquery("cebrada").
Cuando cargo este archivo php con load o $.ajax estos efectos se pierden.
Que error cometo?
Me pueden ayudar
Geacias
Por Rob el 24 de Febrero de 2008
Por PoZu el 27 de Marzo de 2008
Por NEO_JP el 31 de Marzo de 2008
ryuz :
Código :
Esta es una muy mala técnica de evitar que la página sigue el evento y redireccione a la siguiente página.
Para esto lo que uno debe hacer es regresar un boolean al evento para asi detenerlo por completo con un return.
Código :
Por ryuz el 01 de Abril de 2008
http://www.ryuz.es/jqe/experiment.html
Por flashreloco el 01 de Abril de 2008
Por dvd el 24 de Julio de 2008
Por hola, soy new , algu el 26 de Julio de 2008
<html>
<head>
.
.
<!-- jQuery-->
<script type="text/javascript" src="script/jquery-latest.pack.js"></script>
<!-- CSS-->
....
<!-- Funcion carga automatica de index2.htm -->
<script type="text/javascript">
$(document).ready(function(){
$("#cuerpo").load("/index2.htm");
});
</script>
</head>
.
.
.
pero no me carga el contenido del index1 :/
alguien me podria ayudar? pliss
Por AyllonDark el 23 de Agosto de 2008
Pero tampoco que me muestre la pag. html en un frame o iframe, sino en un DIV, ya que este se adapta al tamaño que tenga tu pag. html y no como los frame o iframe que te muestran sus barras.
Ok spero me hayan entendido y espero que muchos de los usuarios que dominan flash me puedan dar una solucion.
Gracias de Antemano.
Por AyllonDark el 31 de Agosto de 2008
ya que con botones en flash la veo mas dificil.
Gracias de Antemano.
Por Christian el 11 de Septiembre de 2008
Gracias
Por BlackMage el 12 de Septiembre de 2008
Tengo una duda, y si quisiera que solo carge una web sin dar click a algún boton, como cambiaría la función??
Por Andrea el 16 de Octubre de 2008
Por BEZOWIE el 05 de Noviembre de 2008
Muchas Gracias
Por Maximoel88 el 30 de Noviembre de 2008
Por ilen el 01 de Enero de 2009
<a href="mipagina.php">PHP</a> lo que me habre es la ventana para guardar ese archivo, mas no la pagina, le explico tengo el index.php y las otras pagina como _menuVertica.php tambien cabecera.php ese es el problema... como hago para del menu enlazarlas con <a href=......
Por covra el 28 de Enero de 2009
eso se puede con ese mismo script?
Por miguel el 26 de Febrero de 2009
Por Adrián el 10 de Abril de 2009
Saludos!
Por Marco el 20 de Abril de 2009
Saludos!
Por Marco el 21 de Abril de 2009
#loading {
position:absolute;
height: 15px;
width: 155px;
left: 358px;
top: 21px;
}
de esa manera puedo elegir donde quiero que apareza la imagen de carga
sigo tratando de lograr que funcionen los botones de atras y adelante prove con ajaxhistoy algo asi y no me funciona si alguien tiene una solucion para eso se lo voy a agradecer mucho saludos!
Por Bea el 27 de Mayo de 2009
Por favor me es muy urgente y no lo doy encontrado!!!
Por Beatriz el 27 de Mayo de 2009
Pero tampoco que me muestre la pag. html en un frame o iframe, sino en un DIV, ya que este se adapta al tamaño que tenga tu pag. html y no como los frame o iframe que te muestran sus barras.
Ok spero me hayan entendido y espero que muchos de los usuarios que dominan flash me puedan dar una solucion.
Gracias de Antemano.
Este comentario está más arriba y me identifico con él. Por favor si habéis resuelto el problema o alguién sabe como hacerlo por favor ayudadme. Llevo dias buscando y no encuentro nada.
Gracias
Por carlospalomito el 03 de Agosto de 2009
supongo que es algo parecido a esto, pero no ma sale
<a href="uno.htm" onclick="return loadurl(this.href,'show');">Enlace Uno</a>
Por carlospalomito el 04 de Agosto de 2009
lo unico que tiene que hacer uno es que en las paginas que va a manejar uno dentro del div, el texto tiene que estar encerrado dentro de un div con id igual al del menu de la pagina principal, asi cualquier link es tomado encuenta y se tiene que volver a declarar el scrip en el head
men es igual al div donde tengo el menu
desc es igual al div donde va a aparecer la respuesta del link
<script type="text/javascript">
$(document).ready(function(){
$("#men a").each(function(){
var href = $(this).attr("href");
$(this).click(function(){
$("#desc").hide().load(href).fadeIn("slow"); //Le damos efecto
$(this).attr({ href: "#"});
});
});
});
</script>
par el asunto de los acentos y "ñ"
coloca en el head esto
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Por f(x) el 19 de Agosto de 2009
Espero que me puedan ayudar amigos, estoy muy complicado.
Gracias de antemano
Por DrMartin el 13 de Septiembre de 2009
Saludos.
Por Jhonatan el 29 de Septiembre de 2009
asi me quedo el codigo y no me funca
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#show").load("http://www.synapse.com.ve/index.php");
});
</script>
</head>
<body>
<div id="show"></div>
</body>
</html>
Por Maria el 28 de Octubre de 2009
muchas gracias
Por seudo el 09 de Noviembre de 2009
Por Franco el 11 de Noviembre de 2009
Muchas gracias!
Por manolito el 28 de Diciembre de 2009
El caso es que he usado este ejemplo de menú y funciona perfectamente, pero me gustaría saber si se puede hacer que al cargar la página se cargue "automáticamente" una de las opciones del menú que yo le diga, para que no salga en blanco al principio.
¿Cómo puedo hacerlo?
Muchas gracias por vuestra ayuda.
Por Mariola el 29 de Diciembre de 2009
Por Carlos el 01 de Enero de 2010
¿Alguien sabe solucionarlo?
Por manolito el 01 de Enero de 2010
O sea, el truco funciona perfectamente y carga la página html en el div que se indique, pero no funcionan muchas cosas de esa página html cargada.
Por Carlos el 02 de Enero de 2010
Ya te digo, me funciona perfectamente en el resto de los navegadores, pero no en Safari de Mac. Queda chulisimo cargar en una div una página html que contiene un ligthbox, me da rabia que no funcione en Safari de Mac.
En el safari de Mac reacciona pero carga la imagen eliminando toda la web y de forma rara...
Daremos con la solución?
Por manolito el 04 de Enero de 2010
Por Anonimo el 22 de Enero de 2010
Por cesar el 27 de Enero de 2010
$(".accion").click(function(event) {
event.preventDefault();
alink = $(this).attr('href');
$("#resultados").load(alink + ' #resultados');
});
utilizo como enlace el título de cada columna para actualizar mi tabla, pero solo funciona una vez y luego se me recarga la página por completo. es como si no reconociera las etiquetas dentro del DIV 'resultado'... alguna sugerencia?
Por Miguel el 26 de Febrero de 2010
Por Miguel el 27 de Febrero de 2010
Por Miguel el 27 de Febrero de 2010
Por mborba el 08 de Abril de 2010
Si alguien sabe como hacerlo por favor ayuda!!!
Por Gothemm el 13 de Abril de 2010
sino aqui les pongo una guia de esto:
http://api.jquery.com/jQuery.get/
Por scorpio el 26 de Abril de 2010
Por Rossana el 19 de Mayo de 2010
Por caroli el 24 de Junio de 2010
funciona todo correctamente pero cuando vuelvo a presionar otro link me repite la ultima carga. Ejemplo: hago click en curriculum y se carga pero cuando hago click en un "li" que no tiene ninguna funcion solo que es parte de un menu arbol desplegable, se carga el curriculum que es lo que cargué último. Como puedo hacer para que ése "li" siga funcionando, desplegando el menu pero no me lo tome como un link que debe cargar un html?
gracias por la ayuda... y perdón las preguntas
Por Juan el 07 de Julio de 2010
Por Esteban el 04 de Agosto de 2010
Por Esteban Zero el 14 de Agosto de 2010
Por SsAx el 17 de Agosto de 2010
Por CLAnonimo el 26 de Septiembre de 2010
Hola a todos tengo el mismo problema implemente el script inicial, pero cuando doy clic se va a otra pagina.
Por David el 01 de Octubre de 2010
Estoy haciendo una página web. Cargo htmls externos en un div con jquery. El problema que en los html's externos no se me ven las tildes ni ñ en el navegador.Si quito el código de Jquery todo perfecto. Qué puedo hacer?
Tengo puesto esto:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
Un saludo y gracias
Por Jozz el 03 de Noviembre de 2010
Por masinteligente.com el 05 de Enero de 2011
Por dd el 24 de Enero de 2011
Por prometion el 01 de Febrero de 2011
************de aquí proviene mi lanzamiento:click*********
<li id="caja_ext2"><a href="javascript:Envia2(<?php echo $menusup2[0];?>,'menucarga',<?php echo $menusup2[1];?>,'cuerpo')" title=<?php echo $menusup2[2];?>><?php echo $menusup2[3];?></a></li>
*********************funciones que uso********
function newAjax(){
var xmlhttp=false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function setContent(page, container)
{
//new Ajax.Updater(container, "/pages/"+page);
new Ajax.Updater(container, page);
}
function Envia2(_pagina,capa,_pagina2,capa2) {
setContent(_pagina,capa);
setContent(_pagina2,capa2);
}
*****son js de scriptaculous y prototype***por eso esta resumidisimo****
Por Alejandro el 03 de Febrero de 2011
Por sel el 18 de Abril de 2011
Por sel el 18 de Abril de 2011
Por fuser28 el 12 de Mayo de 2011
Por NEO_JP el 16 de Mayo de 2011
fuser28-blog :
Debes executar el codigo js del slide despues de agregar el html.
Por Francisco el 27 de Junio de 2011
Por Charlotte el 15 de Julio de 2011
Por Spieluhr el 19 de Julio de 2011
BUENO eso de el link al "creacionismo" con el nombre de "iDIotas"
jajajaja...
Por Sergio el 10 de Octubre de 2011
De seguro me servirá para mi proyecto..!!!
Por sergio el 10 de Octubre de 2011
Por CRD el 17 de Diciembre de 2011
Por kimeraweb el 02 de Enero de 2012
Mas bien yo diria que funciona como un join de mysql. Ademas, una vez cargada, si lo usas como destino de un menu (quiero decir, un enlace que invoca a otro) la pagina no vuelve a ejecutar el jquery, es decir, la carga, muestra el texto pero sus funciones no estan definidas esta vez, hay que refrescar la pagina.
Aqui ando buscando alguna manera de hacer 1 refresh una sola vez... no me esta gustando tanto jquery... llevo 3 dias con este problema.
Por marcelo el 17 de Enero de 2012
como podria hacer para redireccionar un submit, es decir si la pagina uno.htm tuviera un submit como lo redirecciono para que tambien se carge en la pagina principal.
Por Pedro el 25 de Enero de 2012
Por NextLevel el 05 de Abril de 2012
Por NextLevel el 09 de Abril de 2012
Por atonab el 11 de Octubre de 2012
Por el 11 de Marzo de 2013
Por Miguel el 05 de Abril de 2013
Por Lunatic Lycanthrop el 08 de Abril de 2013
Miguel-blog :
Por Paco el 17 de Junio de 2013
Por jab70 el 24 de Agosto de 2013
"no funciona en Chrome"
pero no encontre las respuestas.
Yo lo probe con Firefox y funciona
en Chrome no funciona, si le pongo mal el id="" de la division si carga el archivo pero en una pagina nueva.
Por Marcelo el 18 de Marzo de 2014
Por oswal el 30 de Agosto de 2014
Por Leop el 08 de Febrero de 2015
Por Alberto el 10 de Agosto de 2015
Les vá a salir una ventana desplegable mostrandoles la causa del error en chrome-----Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.----
Le dan click al enlace que aparece ahí mismo y les abre una nueva ventana; ahi ya pueden ver la página en chrome y la pueen actualizar perfectamente hasta que la puedan ver totalmente en un servidor remoto o su hosting de pago, espero que les sirva...¡¡ Saludos !! ))