Foros del Web » Programando para Internet » PHP »

Problema al procesar respuesta JSON

Estas en el tema de Problema al procesar respuesta JSON en el foro de PHP en Foros del Web. Buenas, Tengo una sección de una página que hace una petición en ajax hacía un script el cual me devuelve un json con una variable ...
  #1 (permalink)  
Antiguo 04/01/2012, 12:43
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Problema al procesar respuesta JSON

Buenas,

Tengo una sección de una página que hace una petición en ajax hacía un script el cual me devuelve un json con una variable html donde está todo el código html listo para insertar en la sección que realiza la petición.

Todo me funciona, recibo los datos correctamente, etc. Pero resulta que tengo una función tooltip que uso para algunos enlaces para mostrar la típico burbuja, y funciona por toda la web menos en los datos que recibe de json.

He comprobado que realmente estuviese escribiendo correctamente todo y no sé porqué no es capaz de interpretar el efecto tooltip en todo el div que proviene de la respuesta json.

Sabéis por qué no? tengo que hacer algo? :S

Muchas gracias de antemano
  #2 (permalink)  
Antiguo 04/01/2012, 12:47
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Problema al procesar respuesta JSON

imagino que es por cosa de las comillas o apostrofes, deberías revisar el html devuelto para ver cómo se imprime.
  #3 (permalink)  
Antiguo 04/01/2012, 13:06
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Problema al procesar respuesta JSON

He hecho un ejemplo lo mas sencillo posible, la petición solo me devuelve este JSON

{"test":"<a href='\/'><img class='tooltip' title='TITULO PERSONALIZADO' src='\/imagenes\/logos\/logo.png' \/><\/a>"}

Si llamo al script json directamente tampoco me muestra el tooltip, en este caso correcto pq él por si solo no tiene ningun JS, solo está la respuesta JSON de arriba.

He probado con comillas simples y comillas dobles y nada

Así creo el JSON

Código PHP:
Ver original
  1. $jsondata2['test'] = '<a href="/"><img class="tooltip" title="TITULO PERSONALIZADO" src="/imagenes/logos/logo.png" /></a>';
  2.  
  3. echo json_encode($jsondata2);
  #4 (permalink)  
Antiguo 04/01/2012, 13:14
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Problema al procesar respuesta JSON

Pero el tooltip que necesita para que se vea?? un html en formato html o un html en formato json?

Saludos!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 04/01/2012, 13:22
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Problema al procesar respuesta JSON

El tooltip lo que necesita es su libreria y la carga

<script type="text/javascript" src="/js/jquery.poshytip.min.js"></script>

$('.poshytip').poshytip({
className: 'tip-twitter',
showTimeout: 1,
alignTo: 'target',
alignX: 'center',
alignY: 'bottom',
offsetY: 10,
allowTipHover: false
});

Con esto es suficiente para que cuando escribas cualquier enlace y le pongas la clase .poshytip te genere el tooltip con el aspecto correspondiente a la libreria.

<a href="#" class="poshytip" title="hola que tal">saludo</a>

Sin embargo cuando recibo los datos de json no se porque el tooltip no pilla bien el aspecto, vamos que es el de toda la vida del navegador.

Me he dado cuenta que en este tipo de páginas que recibes datos desde ajax, si miras el código fuente de la web principal no te aparece el html que traes cuando haces la petición.

No vaya a ser que como el contenido se carga dentro de un div una vez está cargada la página, no lo detecte correctamente? Tendría que cambiar algo para que la función se aplicará también a los datos cargados desde ajax?
  #6 (permalink)  
Antiguo 04/01/2012, 13:29
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Problema al procesar respuesta JSON

Confirmado la parte que el json no tiene nada que ver sino que es la petición en ajax y en como afecta que la página se haya cargado

Porque acabo de hacer una prueba simple de cargar un archivo desde ajax, de esta forma

$("#test").load("/secciones/test.php");

<div id="test"></div>

Y dentro del archivo un trozo de código de la web donde sí funciona el tooltip

<a title="Vista Tabla" class="vtabla poshytip" href="#"></a><a title="Vista Lista" class="vlista poshytip" href="#"></a>

y sin embargo dentro del div test tampoco funciona

Tiene que ser algo del DOM que los JS no tienen afectación sobre los datos cargados desde ajax :S
  #7 (permalink)  
Antiguo 04/01/2012, 13:34
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Problema al procesar respuesta JSON

Otro dato, si al script que cargo vía ajax le añado el document.ready sí que lo pilla bien.

test.php
Código PHP:
Ver original
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. $('.poshytip').poshytip({
  4.     className: 'tip-twitter',
  5.     showTimeout: 1,
  6.     alignTo: 'target',
  7.     alignX: 'center',
  8.     alignY: 'bottom',
  9.     offsetY: 10,
  10.     allowTipHover: false
  11. });
  12. });
  13. </script>
  14. <div id="vistas">
  15. <a title="Vista Tabla" class="vtabla poshytip" href="#"></a><a title="Vista Lista" class="vlista poshytip" href="#"></a>
  16. </div>

Ahora falta saber como en lugar de esto, se le puede aplicar a la respuesta JSON....
  #8 (permalink)  
Antiguo 04/01/2012, 13:37
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Problema al procesar respuesta JSON

Toma ya! eran correctas las suposiciones, si se lo paso también al JSON para imprimirlo funciona.

Código PHP:
Ver original
  1. $jsondata['script']="
  2.             <script type='text/javascript'>
  3.             $(document).ready(function(){
  4.             $('.poshytip').poshytip({
  5.                 className: 'tip-twitter',
  6.                 showTimeout: 1,
  7.                 alignTo: 'target',
  8.                 alignX: 'center',
  9.                 alignY: 'bottom',
  10.                 offsetY: 10,
  11.                 allowTipHover: false
  12.             });
  13.             });
  14. </script>";

Lo cual me extraña tener que tener dos veces el $('.poshytip').poshytip una al incio de la web y otra en cada petición ajax que contenga un tooltip, no?
  #9 (permalink)  
Antiguo 04/01/2012, 13:43
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Problema al procesar respuesta JSON

Me da la sensacion que el tooltip lo estas cargando en el archivo que debe cargarse por ajax y no desde el archivo que lo llama.

Intenta dejar la funcion por defecto en el archivo que va a hacer la llamada de ajax y el archivo a cargar que tenga solo el div con el contenido.

Saludos!

NOTA: Esto es Javascript mods!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!

Etiquetas: html, json, procesar, respuesta, variables
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 13:59.