Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Error en la ejecucion json

Estas en el tema de Error en la ejecucion json en el foro de Frameworks JS en Foros del Web. El script extrae el contenido de un input para buscar su direccion en google, luego descarga uno de los valores del json, por ejemplo el ...
  #1 (permalink)  
Antiguo 01/06/2012, 10:40
Avatar de diegovazgonz  
Fecha de Ingreso: octubre-2010
Ubicación: Ourense
Mensajes: 184
Antigüedad: 14 años, 1 mes
Puntos: 11
Error en la ejecucion json

El script extrae el contenido de un input para buscar su direccion en google, luego descarga uno de los valores del json, por ejemplo el campo name
Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.    
  3.     $("#busprin").keypress(function(e) {
  4.     if(e.keyCode == 13) {
  5.        
  6.         $.ajax({
  7.                 async:  true,
  8.                 url:    "http://maps.google.es/maps/geo?output=json&sensor=true&q=" + $("#busprin").val(),
  9.                 dataType:"json",
  10.                 success: function(data){
  11.                      var json = data;
  12.                      alert(json.name);
  13.                     },
  14.                 error:function(data){
  15.                      alert('Error');
  16.                     }
  17.                 });
  18.     }});
  19.      
  20. });


Código json:
Ver original
  1. {
  2.   "name": "ourense",
  3.   "Status": {
  4.     "code": 200,
  5.     "request": "geocode"
  6.   },
  7.   "Placemark": [ {
  8.     "id": "p1",
  9.     "address": "Ourense, España",
  10.     "AddressDetails": {
  11.    "Accuracy" : 4,
  12.    "Country" : {
  13.       "AdministrativeArea" : {
  14.          "AdministrativeAreaName" : "Galicia",
  15.          "SubAdministrativeArea" : {
  16.             "Locality" : {
  17.                "LocalityName" : "Ourense"
  18.             },
  19.             "SubAdministrativeAreaName" : "Orense"
  20.          }
  21.       },
  22.       "CountryName" : "España",
  23.       "CountryNameCode" : "ES"
  24.    }
  25. },
  26.     "ExtendedData": {
  27.       "LatLonBox": {
  28.         "north": 42.3983214,
  29.         "south": 42.2881793,
  30.         "east": -7.8059585,
  31.         "west": -8.0037342
  32.       }
  33.     },
  34.     "Point": {
  35.       "coordinates": [ -7.8646408, 42.3400086, 0 ]
  36.     }
  37.   } ]
  38. }
__________________
El mejor vino Ribeiro http://www.pedeperdiz.com
  #2 (permalink)  
Antiguo 01/06/2012, 12:25
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 8 meses
Puntos: 192
Respuesta: Error en la ejecucion json

¿Y cual es el problema?

Si obtenés el clásico error:
Cita:
XMLHttpRequest cannot load http://maps.google.es/maps/geo?outpu...r=true&q=asdas. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
Cambiá:
Código Javascript:
Ver original
  1. dataType:"json"
Por:
Código Javascript:
Ver original
  1. dataType:"jsonp"

Pero esto origina un problema (como acabo de darme cuenta) y es que al hacer esto, el servidor de Google ya no envía la data codificada como objeto JSON sino como texto Javascript y tira el siguiente error:
Cita:
"Uncaught SyntaxError: Unexpected token :"
Te marca un error en la respuesta JSON del servidor (por lo que te dije antes). La solución a esto es hacer el pedido con PHP (hacer una especie de wrapper) con AJAX hacer el pedido a ese php.

Resumiendo, hacé un PHP con este contenido:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $json_o = file_get_contents('http://maps.google.es/maps/geo?output=json&sensor=true&q=' . $_REQUEST['q']);
  4.  
  5. echo $json_o;
  6.  
  7. ?>

Llamalo, por ejemplo, google_maps.php. Ahora tu JavaScript debería ser así:
Código Javascript:
Ver original
  1. $.ajax({
  2.     url: "google_maps.php?q=" + escape($("#busprin").val()),
  3.     dataType: "json",
  4.     success: function(data){
  5.          alert(data.name);
  6.         },
  7.     error:function(data){
  8.          alert('Error');
  9.         }
  10. });

Eso funciona perfectamente. Observá el uso de escape() para el valor del input.


Espero haya sido claro. Un saludo.
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 01/06/2012, 12:41
Avatar de diegovazgonz  
Fecha de Ingreso: octubre-2010
Ubicación: Ourense
Mensajes: 184
Antigüedad: 14 años, 1 mes
Puntos: 11
Respuesta: Error en la ejecucion json

el problema es quje me da error,no se ejecuta la parte de lectura json adamas te lo agradezco muchisimo, pero tiene que ser en js y html
__________________
El mejor vino Ribeiro http://www.pedeperdiz.com
  #4 (permalink)  
Antiguo 01/06/2012, 12:43
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 8 meses
Puntos: 192
Respuesta: Error en la ejecucion json

Cita:
Iniciado por diegovazgonz Ver Mensaje
el problema es quje me da error
Bueno, no se puede adivinar. Ni en el post original ni ahora me dijiste qué error. Cuanto más específico, mejor la calidad de la ayuda.

Y por lo que veo, no se va a poder hacerlo como querés. No he encontrado otra solución al problema que te planteé en mi mensaje anterior
__________________
nahueljose.com.ar
  #5 (permalink)  
Antiguo 01/06/2012, 12:58
Avatar de diegovazgonz  
Fecha de Ingreso: octubre-2010
Ubicación: Ourense
Mensajes: 184
Antigüedad: 14 años, 1 mes
Puntos: 11
Respuesta: Error en la ejecucion json

haber, el error consiste basicamente en que no funciona nos se porque no me muestra la variable name ,no se el porque, el codigo es talcual el que tengo en mi web,te paso un enlace de dropbox para que veas https://dl.dropbox.com/u/47775301/index.html
__________________
El mejor vino Ribeiro http://www.pedeperdiz.com
  #6 (permalink)  
Antiguo 01/06/2012, 13:01
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 8 meses
Puntos: 192
Respuesta: Error en la ejecucion json

El error según la consola de Chrome es:
Cita:
XMLHttpRequest cannot load http://maps.google.es/maps/geo?outpu...=true&q=prueba. Origin https://dl.dropbox.com is not allowed by Access-Control-Allow-Origin.
Por lo cual, se aplica todo lo que dije en mi primer respuesta.
__________________
nahueljose.com.ar

Etiquetas: jquery
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 10:58.