Foros del Web » Programando para Internet » Jquery »

jQuery y AJAX

Estas en el tema de jQuery y AJAX en el foro de Jquery en Foros del Web. Estoy emepezando a trabajar con jQuery y hay algo que no entiendo. Estoy intentano cargar un HTML externo dentro de un div destino pero algo ...
  #1 (permalink)  
Antiguo 02/03/2011, 13:12
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años
Puntos: 1
jQuery y AJAX

Estoy emepezando a trabajar con jQuery y hay algo que no entiendo.
Estoy intentano cargar un HTML externo dentro de un div destino pero algo me falla. He hecho esto:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.         $("#enlaceajax").click(function(evento){
  3.                 evento.preventDefault();
  4.                 $.ajax({
  5.                     type: 'GET',
  6.                     url: 'cargar.php',
  7.                     dataType: 'html',
  8.                     success: $("#destino").load(data)
  9.                     });
  10.                 });
  11.             });

1º). Por alguna razón no me funciona (la página cargar.php únicamente contiene un echo "TEXTO EXTERNO";

2º) He utilizado data como parámetro de load, pero realmente no sé que hace $.ajax con los datos que captura ¿dónde los alamcena? Es decir, ¿cómo puedo referirme a ellos? ¿Se llaman siempre data o puedo referirme a ellos con el nombre que quiera?

Gracias por adelantado.
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #2 (permalink)  
Antiguo 02/03/2011, 14:31
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: jQuery y AJAX

success: function(data) { $("#destino").html(data); }
  #3 (permalink)  
Antiguo 02/03/2011, 17:35
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años
Puntos: 1
Respuesta: jQuery y AJAX

Lo he hecho así y parece que ajax funciona, pero no termina de hacer lo que debe.

Hago una consulta en json y luego la función representar(data) se encarga de escribir los datos en una tabla. Pero en vez ejecutar la función y escribirla dentro del div, recarga toda la página, con lo que pierdo el propósito del AJAX. ¿Alguna idea de por qué ocurre esto?

Código Javascript:
Ver original
  1. function representar(array)
  2.     {
  3.         for(var i in array)
  4.             document.write(i + " " + array[i] + "<br />");
  5.     }
  6. $(document).ready(function(){
  7.         $("#enlaceajax").click(function(evento){
  8.                 evento.preventDefault();
  9.                 $.ajax({
  10.                     type: 'GET',
  11.                     url: 'cargar.php',
  12.                     dataType: 'json',
  13.                     success: function(data) {
  14.                         $("#destino").load(representar(data));
  15.                         }
  16.                     });
  17.                 });
  18.             });

Me pasa siempre que quiero utilizar document.write dentro de success
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #4 (permalink)  
Antiguo 02/03/2011, 18:38
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: jQuery y AJAX

success: function(data) { $("#destino").html(representar(data)); }
Estás emperrado con el load, y el load no hace lo que crees que hace. Consulta la documentación de jquery.
  #5 (permalink)  
Antiguo 03/03/2011, 03:15
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años
Puntos: 1
Respuesta: jQuery y AJAX

Es que success: function(data) { $("#destino").html(representar(data)); } ya lo había probado antes, y me pasaba lo mismo, por eso volvía probar con el load.

De cualquier modo, me sigue imprimiendo el script en una página nueva, y no dentro del div, donde debería. Mira este es todo mi código:

cargar.php
//Array JSON que quiero cargar en la página
Código PHP:
Ver original
  1. <?php
  2. echo <<<CODIGO
  3.     {"uno":"hola","dos":"adios"}
  4. CODIGO;
  5. ?>

index.php
Código PHP:
Ver original
  1. <html>
  2. <head>
  3.     <script type="text/javascript" src="jquery.js"></script>
  4.     <script type="text/javascript">
  5.     function representar(array)
  6.     {
  7.         for(var i in array)
  8.             document.write(i + " " + array[i] + "<br />");
  9.     }
  10.     $(document).ready(function(){
  11.         $("#enlaceajax").click(function(evento){
  12.                 evento.preventDefault();
  13.                 $.ajax({
  14.                     type: 'GET',
  15.                     url: 'cargar.php',
  16.                     dataType: 'json',
  17.                     success: function(data) {
  18.                         $("#destino").html(representar(data));
  19.                         }
  20.                     });
  21.                 });
  22.             });
  23.        
  24.     </script>
  25.  
  26. </head>
  27. <body>
  28.     <a href="#" id="enlaceajax">Haz clic!</a>
  29.     <br>
  30.     <div id="destino"></script></div>
  31. </body>
  32. </html>

PD: Estoy repasando la API de jQuery, pero de momento no encuentro la solución.

Gracias de nuevo.
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #6 (permalink)  
Antiguo 03/03/2011, 05:22
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: jQuery y AJAX

Sustituye la función:
function representar(array)
{
var cadena="";
for(var i in array)
cadena+=i + " " + array[i] + "<br />";
return cadena;
}

En el DIV destino te sobra un </script>
  #7 (permalink)  
Antiguo 03/03/2011, 13:58
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años
Puntos: 1
Respuesta: jQuery y AJAX

Muchísimas gracias. Ahora todo funciona perfecto.

Gracias de nuevo.
__________________
Blog: http://a-dream-of-dragon.blogspot.com

Etiquetas: ajax
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:17.