Foros del Web » Programación para mayores de 30 ;) » Programación móvil »

Problema para leer JSon - Sencha Touch 2

Estas en el tema de Problema para leer JSon - Sencha Touch 2 en el foro de Programación móvil en Foros del Web. Que tal compañeros, despues de estar buscando información mas a parte la info que me proporciono @MarioAranque en un post anterior me eh decantado por ...
  #1 (permalink)  
Antiguo 18/04/2012, 23:41
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 17 años, 8 meses
Puntos: 406
Problema para leer JSon - Sencha Touch 2

Que tal compañeros, despues de estar buscando información mas a parte la info que me proporciono @MarioAranque en un post anterior me eh decantado por usar Sencha Touch, y pues he ah ido bastante bien, pero ahora tengo un problema, estoy tratando de cargar un json en una lista, estoy siguiendo el "tutorial" de la propia Sencha Touch y si utilizo el url del Feed de Sencha (el que usan el en vídeo) funciona correctamente, sin embargo, al usar un json propio (generado desde PHP) no carga los items, eh "copiado" el formato en el que entrega el Feed de Sencha en mi json y aun así no funciona, aquí mi código para cargar el json y agregar los items a una lista...

Código Javascript:
Ver original
  1. Ext.define('animovil.view.Videos',{
  2.     extend: 'Ext.navigation.View',
  3.     xtype: 'videos',
  4.    
  5.     config: {
  6.         title: 'Videos',
  7.         iconCls: 'star',
  8.        
  9.         items: {
  10.             xtype: 'list',
  11.             itemTpl: '{title}',
  12.            
  13.             store: {
  14.                 autoLoad: true,
  15.                 fields: ['title','author','content'],
  16.                
  17.                 proxy: {
  18.                     type: 'jsonp',
  19.                     url: 'http://localhost/listVideos.php',
  20.                     //url: 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=http://feeds.feedburner.com/SenchaBlog',
  21.                     reader: {
  22.                         type: 'json',
  23.                         rootProperty: 'responseData.feed.entries'
  24.                     }
  25.                 }
  26.             }
  27.         }
  28.     }
  29. });

Y aquí el formato del json:
Código Javascript:
Ver original
  1. {
  2.     "responseData": {
  3.         "feed": {
  4.             "entries": [{
  5.                 "title": "math 345",
  6.                 "author": "nemutagk",
  7.                 "content": "Lorem ipsum ad his scripta blandit partiendo, eum fastidii accumsan euripidis in, eum liber hendrerit an. Qui ut wisi vocibus suscipiantur, quo dicit ridens inciderint id. Quo mundi lobortis reformidans eu, legimus senserit definiebas an eos. Eu sit tincidunt incorrupte definitionem, vis mutat affert percipit cu, eirmod consectetuer signiferumque eu per. In usu latine equidem dolores. Quo no falli viris intellegam, ut fugit veritus placerat per. Ius id vidit volumus mandamus, vide veritus democritum te nec, ei eos debet libris consulatu. No mei ferri graeco dicunt, ad cum veri accommodare."
  8.             }, {
  9.                 "title": "math 840",
  10.                 "author": "nemutagk",
  11.                 "content": "Lorem ipsum ad his scripta blandit partiendo, eum fastidii accumsan euripidis in, eum liber hendrerit an. Qui ut wisi vocibus suscipiantur, quo dicit ridens inciderint id. Quo mundi lobortis reformidans eu, legimus senserit definiebas an eos. Eu sit tincidunt incorrupte definitionem, vis mutat affert percipit cu, eirmod consectetuer signiferumque eu per. In usu latine equidem dolores. Quo no falli viris intellegam, ut fugit veritus placerat per. Ius id vidit volumus mandamus, vide veritus democritum te nec, ei eos debet libris consulatu. No mei ferri graeco dicunt, ad cum veri accommodare."
  12.             }, {
  13.                 "title": "math 469",
  14.                 "author": "nemutagk",
  15.                 "content": "Lorem ipsum ad his scripta blandit partiendo, eum fastidii accumsan euripidis in, eum liber hendrerit an. Qui ut wisi vocibus suscipiantur, quo dicit ridens inciderint id. Quo mundi lobortis reformidans eu, legimus senserit definiebas an eos. Eu sit tincidunt incorrupte definitionem, vis mutat affert percipit cu, eirmod consectetuer signiferumque eu per. In usu latine equidem dolores. Quo no falli viris intellegam, ut fugit veritus placerat per. Ius id vidit volumus mandamus, vide veritus democritum te nec, ei eos debet libris consulatu. No mei ferri graeco dicunt, ad cum veri accommodare."
  16.             }]
  17.         }
  18.     }
  19. }

Si pueden ver el formato en el que entrega el Feed de Sencha verán que es idéntico al formato que yo estoy entregando en el json, pero al correr la aplicación se queda cargando y no muestra los items en la lista, sin embargo si coloco el Feed de Sencha como source (el json a cargar) funciona correcto y me muestra los items en la lista, a ver si alguien me puede iluminar en que estoy haciendo mal!

De antemano gracias por su ayuda/comentarios!
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #2 (permalink)  
Antiguo 19/04/2012, 13:55
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 17 años, 8 meses
Puntos: 406
Respuesta: Problema para leer JSon - Sencha Touch 2

Después de estar leyendo eh visto que una petición JSONP es diferente a una petición JSON, la primera cuando se hace la petición se envía una variable GET con el nombre 'callback' y es necesario imprimirla antes de imprimir el JSON, si no se hace aunque tengamos un JSON valido lo tomara como invalido y marcará error, para ser sincero era la primera vez que usaba JSONP y no sabia realmente las diferencias pero bueno, ahora ya funciona...

Si no queda clara la razón por la que no funcionaba, dejo el código funcionando en PHP...

Código PHP:
Ver original
  1. <?php
  2.  
  3. $json = array(); //Aquí guardamos el array a convertir en JSON
  4.  
  5. //Imprimimos el JSON PERO, primero verificamos si es una llamada JSON o JSONP
  6. //para eso verificamos si existe la variable GET['callback']
  7. //Si existe imprimimos la variable, después imprimimos el json DENTRO de parentesis
  8. //Si no existe la variable imprimimos directamente el json
  9.  
  10. echo isset($_GET['callback']) ? $_GET['callback'].'('.json_encode($json).')' : json_encode($json);

Por cierto, el JSONP final quedaría así con Sencha Touch 2
Código Javascript:
Ver original
  1. Ext.data.JsonP.callback1({
  2.     "responseData": {
  3.         "feed": {
  4.             "entries": [{
  5.                 "title": "math 2",
  6.                 "author": "nemutagk",
  7.                 "content": "Lorem ipsum ad his scripta blandit partiendo, eum fastidii accumsan euripidis in, eum liber hendrerit an. Qui ut wisi vocibus suscipiantur, quo dicit ridens inciderint id. Quo mundi lobortis reformidans eu, legimus senserit definiebas an eos. Eu sit tincidunt incorrupte definitionem, vis mutat affert percipit cu, eirmod consectetuer signiferumque eu per. In usu latine equidem dolores. Quo no falli viris intellegam, ut fugit veritus placerat per. Ius id vidit volumus mandamus, vide veritus democritum te nec, ei eos debet libris consulatu. No mei ferri graeco dicunt, ad cum veri accommodare."
  8.             }, {
  9.                 "title": "math 47",
  10.                 "author": "nemutagk",
  11.                 "content": "Lorem ipsum ad his scripta blandit partiendo, eum fastidii accumsan euripidis in, eum liber hendrerit an. Qui ut wisi vocibus suscipiantur, quo dicit ridens inciderint id. Quo mundi lobortis reformidans eu, legimus senserit definiebas an eos. Eu sit tincidunt incorrupte definitionem, vis mutat affert percipit cu, eirmod consectetuer signiferumque eu per. In usu latine equidem dolores. Quo no falli viris intellegam, ut fugit veritus placerat per. Ius id vidit volumus mandamus, vide veritus democritum te nec, ei eos debet libris consulatu. No mei ferri graeco dicunt, ad cum veri accommodare."
  12.             }, {
  13.                 "title": "math 706",
  14.                 "author": "nemutagk",
  15.                 "content": "Lorem ipsum ad his scripta blandit partiendo, eum fastidii accumsan euripidis in, eum liber hendrerit an. Qui ut wisi vocibus suscipiantur, quo dicit ridens inciderint id. Quo mundi lobortis reformidans eu, legimus senserit definiebas an eos. Eu sit tincidunt incorrupte definitionem, vis mutat affert percipit cu, eirmod consectetuer signiferumque eu per. In usu latine equidem dolores. Quo no falli viris intellegam, ut fugit veritus placerat per. Ius id vidit volumus mandamus, vide veritus democritum te nec, ei eos debet libris consulatu. No mei ferri graeco dicunt, ad cum veri accommodare."
  16.             }]
  17.         }
  18.     }
  19. })
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: json, touch, video
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 04:26.