Comunidad de diseño web y desarrollo en internet online

problema con json,jquery y php

Citar            
MensajeEscrito el 22 Jul 2011 11:07 pm
Después de mirar páginas,apuntes y foros no consigo solucionar el problema.
Intento recuperar desde una pagina un php objeto Json que envío con jquery.En este objeto envío un parametro con el que realizar una consulta para obtener los resultados y reenviarlos pero no entiendo por que no consigo interpretar lo que recibo.

Esta es la función de Jquery con la llamada a la pagina

Código Javascript :

var param = new Object();
   param.pag = "3333";
   $.ajax({
   url: 'paginacion.php',
   async: true,
   type: 'GET',
   data: param,
   datatype: 'json',
   success: function(data)
   {
       $.getJSON("paginacion.php", function(data){              
         alert(data);
               } // fim do callback
      );
   },

El error ahora debe estar en el php,porque

Código PHP :

//Esto me devuelve bien el valor
$pagina = 11;
echo json_encode($pagina);

//Esto es como si hubiera algún error que hace que dejara de ejecutarse el código y no devuelve nada
$json_a=json_decode($_GET["pag"]);
$objeto = get_object_vars($json_a); 
$pagina = $objeto['pag'];
//Incluso si hago esto,no me devuelve ningun valor
$json_a=json_decode($_GET["pag"]);
$objeto = get_object_vars($json_a); 
$pagina = 11; 


Alguien ve algo erróneo????Gracias

Por david_g

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Jul 2011 02:12 pm
No estoy muy seguro pero

Código Javascript :

var param = new Object(); 
   param.pag = "3333"; 
   $.ajax({ 
   url: 'paginacion.php', 
   async: true, 
   type: 'GET', 
   data: param, 
   datatype: 'json', 
   success: function(data) 
   { 
       $.getJSON("paginacion.php", function(data){               
         alert(data); 
               } // fim do callback 
      ); 
   }, 

Creo que falta cerrar algunas llaves y no estoy seguro de porque usas $.getJSON, prueba de la siguiente manera:

Código Javascript :

var param = new Object(); 
   param.pag = "3333"; 
   $.ajax({ 
   url: 'paginacion.php', 
   async: true, 
   type: 'GET', 
   data: param, 
   datatype: 'json', 
   success: function(data) 
   {         
         alert(data); 
// o pon
alert(data.pagina);
    }
 });
}
 

No estoy muy seguro, hace tiempo no uso JSON

Por Night~

43 de clabLevel



Genero:Masculino  

Geek, Gamer, Otaku

chrome
Citar            
MensajeEscrito el 24 Jul 2011 10:48 pm
Solucionado!
Me estaba aramando un lio y estaba haciendo lo mismo dos veces,con getJson ya haces la petición AJAX asi que hacia la petición dos veces y encima poniendo mal la URL en la segunda ya que faltaba el parámetro.
Es lo que tiene ser novato....
Lo de usar getJson es porque quería que me devolviera un array y no solo una variable,y pensaba que era la mejor forma de hacerlo.

Como debería hacerlo para enviar un array desde el php y luego recorrerlo en el ajax sin usar Json?se puede? Serviría con "echo $array" directamente?

Gracias por la respuesta anterior

Por david_g

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Jul 2011 12:08 am
Te serviría mucho usar XML.
Por ejemplo, tienes

Código PHP :

$loque_devolvemos = array(
'nombreusuario'  => 'Night',
'probando'           => 'test',
'otro'                   => 'otrovalor'
)
// para devolver esto de una buena manera haces esto
header('Content-type: text/xml');
echo "<respuesta>
<nombreusuario>{$loque_devolvemos['nombreusuario']}</nombreusuario>
<probando>{$loque_devolvemos['probando']}</probando>
<otro>{$loque_devolvemos['otro']}</otro>
</respuesta>
";

Luego con el jquery cambias mas o menos así:

Código Javascript :

var param = new Object();  
   param.pag = "3333";  
   $.ajax({  
   url: 'paginacion.php',  
   async: true,  
   type: 'GET',  
   data: param,  
   datatype: 'xml',  
   success: function(data)  
   {
       alert('Tu nombre de usuario es: '+jQuery(data).find("nombreusuario").text()+'\n El valor de probando es: '+jQuery(data).find("probando").text()+'\n El valor de otro, osea lo que se te ocurra es: '+jQuery(data).find("otro").text());
   }
 }); 

Dime si te funciona, en lo personal te recomiendo mucho usar xml

Me he quedado con ganas de probar así que me gustaría que pruebes lo siguiente:

Código Javascript :

success: function(data)
{
    var respuesta = new Array();
    respuesta['nombre_de_usuario'] = jQuery(data).find("nombreusuario").text();
}

Por Night~

43 de clabLevel



Genero:Masculino  

Geek, Gamer, Otaku

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.