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

getJson con otro dominio

Estas en el tema de getJson con otro dominio en el foro de Frameworks JS en Foros del Web. Hola estoy tratando de leer un json desde otro servidor ( también mio ), pero no logro hacerlo, por ahí lei que tenia que hacerlo ...
  #1 (permalink)  
Antiguo 04/10/2012, 21:04
Avatar de ONahuelO  
Fecha de Ingreso: junio-2009
Ubicación: Gualeguaychú, Argentina
Mensajes: 144
Antigüedad: 11 años, 4 meses
Puntos: 4
getJson con otro dominio

Hola estoy tratando de leer un json desde otro servidor ( también mio ), pero no logro hacerlo, por ahí lei que tenia que hacerlo con JSONP, leyendo algo sobre eso encontré que tenia que agregarle un callback, porsi quería ejecutar alguna función de callback, pero si ponía callback=? lo tomaba como una función recién declarada, pero sique sin funcionar.

Código Javascript:
Ver original
  1. <script src="http://code.jquery.com/jquery-latest.js"></script>
  2. <script>
  3.  
  4. $.getJSON("http://rubros.16mb.com/default.php?callback=?",
  5.   function(data){
  6.     alert('casa');
  7.   });
  8.  
  9.  
  10.   </script>


Mi PHP:
Código PHP:
Ver original
  1. <?php
  2. header('Cache-Control: no-cache, must-revalidate');
  3. header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
  4. header('Content-type: application/json');
  5.  
  6.  
  7. $json = array('casa','casa1','casa2');
  8.  
  9. echo json_encode($json);
  10. ?>


Talvez sea que yo no entendí bien el modo de funcionamiento de JSONP, pero no lo puedo hacer funcionar, si alguien me puede ayudar se lo agradeseria mucho.
  #2 (permalink)  
Antiguo 05/10/2012, 05:05
Avatar de Sirikon  
Fecha de Ingreso: marzo-2009
Mensajes: 82
Antigüedad: 11 años, 6 meses
Puntos: 11
Respuesta: getJson con otro dominio

Código:
$.ajax({
  url: 'http://rubros.16mb.com/default.php',
  timeout: 8000,
  dataType: 'jsonp',
  success: function(res){
    // Aqui haz lo que quieras con la respuesta JSON almacenada en res
  }
});
Prueba ese código a ver que tal te va, a mi por lo menos me funciona para llamadas JSON de servidores remotos.

También puedes añadir a ese PHP el siguiente codigo:

Código:
header("Access-Control-Allow-Origin: *");
Lo malo es que de esa forma ese JSON podria cogerlo cualquier persona que haga una llamada JSON ahí y fácilmente.

Mi recomendaciónes que utilices la primera opción que te he dicho

Saludos!
  #3 (permalink)  
Antiguo 05/10/2012, 12:13
Avatar de ONahuelO  
Fecha de Ingreso: junio-2009
Ubicación: Gualeguaychú, Argentina
Mensajes: 144
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: getJson con otro dominio

Gracias, probe hacer lo que me decias pero no me funciono, en teoria me deberia de devolver un alert,al cargar el json, pero no lo hace:
Código Javascript:
Ver original
  1. <script src="http://code.jquery.com/jquery-latest.js"></script>
  2. <script>
  3.  
  4. $.ajax({
  5.   url: 'http://rubros.16mb.com/default.php',
  6.   timeout: 8000,
  7.   dataType: 'jsonp',
  8.   success: function(res){
  9.     // Aqui haz lo que quieras con la respuesta JSON almacenada en res
  10.     alert('sdsf');
  11.   }
  12. });
  13.  
  14.  
  15.  
  16.   </script>


PHP ( rubros.16mb.com ):
Código PHP:
<?php
header
("Access-Control-Allow-Origin: *");
header('Content-type: application/json');


$json = array('casa','casa1','casa2');

echo 
json_encode($json);
?>


Lo de que lo pueda acceder cualquiera al json, es justa mente lo que necesito, ya que lo que quiero hacer en ese servidor es una api php para que maneje mi web, y poder conectarme a ella desde otras web o apps mobiles. ( tipo la vieja app de twitter )
  #4 (permalink)  
Antiguo 06/10/2012, 04:18
Avatar de Sirikon  
Fecha de Ingreso: marzo-2009
Mensajes: 82
Antigüedad: 11 años, 6 meses
Puntos: 11
Respuesta: getJson con otro dominio

Si ya pusiste el Access-Control-Allow-Origin no necesitas hacer un jsonp, con un json normal ya te vale ya que ya permites el acceso desde cualquier sitio:

Código Javascript:
Ver original
  1. $.ajax({
  2.   url:'http://rubros.16mb.com/default.php',
  3.   timeout: 5000,
  4.   dataType: 'json',
  5.   success: function(res){
  6.     alert(res.micallback.value)
  7.   }
  8. })

Acabo de probar ese código y me funciona, a ver a ti que tal.

Saludos!
  #5 (permalink)  
Antiguo 06/10/2012, 10:35
Avatar de ONahuelO  
Fecha de Ingreso: junio-2009
Ubicación: Gualeguaychú, Argentina
Mensajes: 144
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: getJson con otro dominio

Muchas gracias, me funciono perfecto.

Etiquetas: dominio, funcion, getjson, js, php
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 18:37.