Diferencia entre revisiones de «Usuario:Juanda/jQuery/Ajax»
De WikiEducator
(→Método load) |
(→Cachear AJAX) |
||
(28 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 8: | Línea 8: | ||
<div class="slide"> | <div class="slide"> | ||
− | |||
=== JSON === | === JSON === | ||
* '''J'''ava'''S'''cript '''O'''bject '''N'''otation | * '''J'''ava'''S'''cript '''O'''bject '''N'''otation | ||
Línea 18: | Línea 17: | ||
//Objeto JSON: | //Objeto JSON: | ||
{ "nombre":"Pepe" , "apellido":"Pérez" } | { "nombre":"Pepe" , "apellido":"Pérez" } | ||
− | + | </source> | |
+ | </div> | ||
+ | <div class="slide"> | ||
+ | <source lang="javascript"> | ||
//Array JSON | //Array JSON | ||
{ | { | ||
Línea 36: | Línea 38: | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
+ | |||
===¿Qué es AJAX?=== | ===¿Qué es AJAX?=== | ||
*AJAX quiere decir Asynchronous JavaScript and XML. | *AJAX quiere decir Asynchronous JavaScript and XML. | ||
Línea 55: | Línea 58: | ||
*Será útil usar caché solamente con contenidos estáticos. | *Será útil usar caché solamente con contenidos estáticos. | ||
*Es aconsejable indicarlo porque el comportamiento por defecto puede variar en función del navegador. | *Es aconsejable indicarlo porque el comportamiento por defecto puede variar en función del navegador. | ||
+ | *La caché solo funciona mediante GET. | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
− | === | + | |
+ | ===Método load=== | ||
+ | * Es el método más sencillo. Lo usaremos para cargar cierto contenido por AJAX al DOM de la página actual. | ||
<source lang="javascript"> | <source lang="javascript"> | ||
− | $. | + | $(selector).load(URL,data,callback); |
− | + | </source> | |
− | + | *Se puede especificar un selector jQuery a la URL: | |
+ | <source lang="javascript"> | ||
+ | $("#div1").load("demo_test.txt #p1"); | ||
</source> | </source> | ||
− | |||
− | |||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
− | === | + | ====Ejemplo de uso==== |
− | * | + | *Petición de contenido vía ajax al pulsar un enlace: |
<source lang="html4strict"> | <source lang="html4strict"> | ||
<html> | <html> | ||
Línea 94: | Línea 100: | ||
</source> | </source> | ||
</div> | </div> | ||
+ | <div class="slide"> | ||
+ | ====Seleccionar datos en petición AJAX==== | ||
+ | *Podemos añadir un selector jQuery a nuestra URL de petición AJAX: | ||
+ | <source lang="javascript"> | ||
+ | $("#div1").load("mipagina.html #p1"); | ||
+ | </source> | ||
+ | * En este caso obtendremos del fichero mipagina.html el elemento identificado con id="p1". | ||
+ | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
====Paso de parámetros==== | ====Paso de parámetros==== | ||
Línea 116: | Línea 131: | ||
</source> | </source> | ||
</div> | </div> | ||
− | |||
<div class="slide"> | <div class="slide"> | ||
====Con mensaje de "carga"==== | ====Con mensaje de "carga"==== | ||
Línea 123: | Línea 137: | ||
$("#enlaceajax").click(function(evento){ | $("#enlaceajax").click(function(evento){ | ||
evento.preventDefault(); | evento.preventDefault(); | ||
− | + | var ajax_load = "<img src='img/load.gif' alt='loading...' />"; | |
− | + | var loadUrl = "pagina_lenta.php"; | |
− | + | $("#result").html(ajax_load).load(loadUrl); | |
− | + | ||
}); | }); | ||
}) | }) | ||
</script> | </script> | ||
+ | </source> | ||
*Fichero en php: | *Fichero en php: | ||
− | <source lang=" | + | <source lang="html4strict"> |
<?php | <?php | ||
sleep(3); | sleep(3); | ||
Línea 137: | Línea 151: | ||
?> | ?> | ||
</source> | </source> | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | $(selector).load(URL,data,'''callback'''); | ||
+ | *El parámetro opcional de callback especifica la función de callback a ejecutar cuando el método load() se haya completado. Puede tener varios parámetros: | ||
+ | :responseTxt - contiene el resultado de la llamada si ha sido un éxito | ||
+ | :statusTXT - contiene el estado de la llamada | ||
+ | :xhr - contiene el objeto XMLHttpRequest | ||
+ | *Ejemplo de uso: | ||
+ | <source lang="javascript"> | ||
+ | $("button").click(function(){ | ||
+ | $("#div1").load("demo_test.txt",function(responseTxt,statusTxt,xhr){ | ||
+ | if(statusTxt=="success") | ||
+ | alert("External content loaded successfully!"); | ||
+ | if(statusTxt=="error") | ||
+ | alert("Error: "+xhr.status+": "+xhr.statusText); | ||
+ | }); | ||
+ | }); | ||
+ | </source> | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | |||
+ | ===Otros métodos=== | ||
+ | *$.getJSON(): Obtiene un fichero JSON de un sitio remoto | ||
+ | *$.getScript(): Obtiene un fichero javascript de un sitio remoto | ||
+ | *$.get(): hace peticiones ajax vía GET | ||
+ | *$.post(): hace peticiones ajax vía POST | ||
+ | *$.ajax(): De más bajo nivel. Será útil para controlar errores en las peticiones AJAX o alguna función específica de AJAX (por ejemplo la cache). | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ===Ajax y Firebug=== | ||
+ | *Podemos hacer un seguimiento de las peticiones Ajax desde la pestaña de Red de Firebug, opción XHR (XML HTTP REQUEST): | ||
+ | [[Archivo:firebug_load_1.png]] | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | *Si pulsamos en el recuadro del + a la izquierda, podremos ver los parámetros que se envían en la petición AJAX. <br/>En esta petición no hay ningún parámetro. El único que hay es un número aleatorio generado para forzar que la petición no se sirva de la caché. | ||
+ | [[Archivo:firebug_load_2.png]] | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | *En la pestaña de respuesta (response) encontramos lo que devuelve la petición AJAX: | ||
+ | [[Archivo:firebug_load_3.png]] | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | *En este caso enviamos más de un parámetro vía GET. Para pasar más de un parámetro: | ||
+ | <source lang="javascript"> | ||
+ | $("#load_get").click(function(){ | ||
+ | $("#result") | ||
+ | .html(ajax_load) | ||
+ | .load(loadUrl, "language=php&version=5"); | ||
+ | }); | ||
+ | </source> | ||
+ | [[Archivo:firebug_load_4.png]] | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | *Si pasamos los parámetros como un objeto en vez de como una cadena, se enviarán vía POST: | ||
+ | <source lang="javascript"> | ||
+ | $("#load_post").click(function(){ | ||
+ | $("#result") | ||
+ | .html(ajax_load) | ||
+ | .load(loadUrl, {language: "php", version: 5}); | ||
+ | }); | ||
+ | </source> | ||
+ | [[Archivo:firebug_load_5.png]] | ||
</div> | </div> | ||
</div> | </div> |
Última revisión de 12:00 5 nov 2012