En ocasiones necesitamos actualizar cierta parte de la página sin tener que refrescarla, una función que suelo utilizar con frecuencia es jQuery load().
Esta función ha quedado obsoleta a partir de la versión 1.8 de jQuery, si necesitáis cargar contenido externo y enviar parámetros podéis usar la funciones get() y post().
Con jQuery load() podemos cargar en un determinado div un archivo externo (php, html, asp…) en el momento que necesitemos o bajo petición del usuario mediante formularios, botones, enlaces…
Este archivo externo al script deberá estar alojado en el mismo dominio de la web.
Otras funciones de jQuery interesantes son: jQuery animate(), jquery show() y hide(), jQuery toggle() y jQuery html().
.load( url [, data] [, callback(responseText, textStatus, XMLHttpRequest)] )
Este método es una sencilla manera de obtener datos del servidor desde el mismo HTML, se parece bastante a $.get(url, data, success), load() es un método y la get() una función global.
En las demos que os pongo a continuación vamos a forzar dicha carga externa mediante la función jQuery Click(), que se ejecutará cuando se pulse el botón.
<html> <head> <title>jQuery Load</title> <!-- Libreria jQuery --> <script type='text/javascript' src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <!-- Acción sobre el botón con id=boton y actualizamos el div con id=capa --> <script type="text/javascript"> $(document).ready(function() { $("#boton").click(function(event) { $("#capa").load('/demos/03-jquery-load01.php'); }); }); </script> </head> <body> <div id="capa">Pulsa 'Actualizar capa' y este texto se actualizará</div> <br> <input name="boton" id="boton" type="button" value="Actualizar capa" /> </body> </html>
<html> <head> <title>jQuery Load</title> <!-- Libreria jQuery --> <script type='text/javascript' src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <!-- Acción sobre el botón con id=boton y actualizamos el div con id=capa --> <script type="text/javascript"> $(document).ready(function() { $("#boton").click(function(event) { $("#capa").load("/demos/2013/03-jquery-load03.php",{valor1:'primer valor', valor2:'segundo valor'}, function(response, status, xhr) { if (status == "error") { var msg = "Error!, algo ha sucedido: "; $("#capa").html(msg + xhr.status + " " + xhr.statusText); } }); }); }); </script> </head> <body> <div id="capa">Pulsa 'Actualizar capa' y este texto se actualizará</div> <br> <input name="boton" id="boton" type="button" value="Actualizar capa" /> </body> </html>
<html> <head> <title>jQuery Load</title> <!-- jQuery lib --> <script type='text/javascript' src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <!-- Action on the button with id=button and update the div with id=layer --> <script type="text/javascript"> $(document).ready(function() { $("#button").click(function(event) { $("#layer").load('/examples/03-jquery-load05.php #content'); }); }); </script> </head> <body> <div id="capa">Pulsa 'Actualizar capa' y este texto se actualizará</div> <br> <input name="boton" id="boton" type="button" value="Actualizar capa" /> </body> </html>
<div id="contenido">CONTENIDO QUE TIENE QUE APARECER</div> <div id="no">ESTO NO DEBE APARECER</div>
Otro ejemplo práctico en esta nueva cuarta demo para cargar un html externo una vez clickado un enlace de texto, aquí el código:
<script type="text/javascript"> $(document).ready(function() { $("#boton2").click(function(event) { $("#capa").load('/demos/2013/03-jquery-load01.php'); }); }); </script>
En caso de trabajar con otras librerías distintas a jQuery os recomiendo en caso de problemas usar jQuery noConflict().