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

Problema al recuperar JSON mediante Ajax

Estas en el tema de Problema al recuperar JSON mediante Ajax en el foro de Frameworks JS en Foros del Web. Hola a todos/as, Llevo toda la mañana y parte de la tarde peleándome con un tema y viendo que no hay manera de que me ...
  #1 (permalink)  
Antiguo 03/02/2014, 12:21
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 8 meses
Puntos: 7
Problema al recuperar JSON mediante Ajax

Hola a todos/as,

Llevo toda la mañana y parte de la tarde peleándome con un tema y viendo que no hay manera de que me salga recurro a vosotros para ver si alguien “me abre los ojos” sobre este asunto.

La cuestión es que quiero recuperar un JSON ubicado en cierta url de Internet. Al principio me cree un método como el siguiente que he probado mil veces para recuperar archivos que se encuentran en mi servidor local y nunca he tenido ningún problema:


Código:
$.ajax({
      
    beforeSend: function() {
      
    },
    
    complete: function() {
            
      },
  
      type: "GET",
        url: "http://www.dominio.com/descargar.php",
      data: { id: "6", tipo: "json"},
        async: false,
        cache: false,
  
    success: function(xhr) {
           tratarJson(xhr);
      
    },
    dataType: 'text',
    error: function(request, status, error) {
      alert("error");
      
    }
  });
  
  
}
Pero en este caso, cuando ataco a una url de otro dominio (que no es localhost) me entra siempre por la parte de “error”.

Entonces pensé que podía ser por el problema que existe en Ajax para recuperar recursos que se encuentran en un dominio diferente (que por seguridad esta prohibido). Entonces mirando por internet, encontré que la manera de resolver el problema era haciendo lo siguiente:


Código:
  $.support.cors = true;
  $.ajax({
    type: "GET",
    dataType: "jsonp",
    crossDomain: true,
    jsonpCallback: "localJsonpCallback",
    url: "http://www.dominio.com/descargar.php",
    data: {id: 6, tipo:'JSON'},
    
    success: function (data)
    {
    alert(data);
    },
    
    error: function (data) {
         alert("error");
    alert(data);
    }
    
    
  });
Pero tampoco me funciona. Me sigue saliendo la alerta que puse en la parte de “error”. Pero en cambio, mirando con las herramientas de depuración de firefox, en la sección de “Red” veo que la petición se ha realizado correctamente, devuelve un código 200 OK y encima si pincho en la parte donde se muestra la “respuesta” puedo ver perfectamente el JSON devuelto.

Entonces lo que no entiendo es porque aparentemente todo esta bién, la petición se realiza, devuelve un código 200, incluso en la cabecera de respuesta veo el JSON devuelto pero en la petición Ajax me sigue entrando por la parte de “Error” y no por la de “Success”.

Para más información, mirando en el depurador de firefox obtengo datos como los siguientes:

status:200
statusText: Success
readyState:4
…………….

Saludos.
  #2 (permalink)  
Antiguo 03/02/2014, 13:45
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 8 meses
Puntos: 47
Respuesta: Problema al recuperar JSON mediante Ajax

el dataType no deberia ser json en lugar de jsonp?? si cambias a dataType:'text' te sigue arrojando error? La consola del navegador arroja algun error de javascript?

Salvo por lo que te comento la verdad que no le veo errores, uso un codigo muy similar para trabajar con la libreria graph de facebook y va sin problemas.

Saludos
  #3 (permalink)  
Antiguo 03/02/2014, 14:11
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 8 meses
Puntos: 7
Respuesta: Problema al recuperar JSON mediante Ajax

Cita:
Iniciado por djaevi Ver Mensaje
el dataType no deberia ser json en lugar de jsonp?? si cambias a dataType:'text' te sigue arrojando error? La consola del navegador arroja algun error de javascript?

Salvo por lo que te comento la verdad que no le veo errores, uso un codigo muy similar para trabajar con la libreria graph de facebook y va sin problemas.

Saludos
Gracias por contestar djaevi,

El error que estoy obteniendo ahora es el siguiente:

"“jsonp callback was not called"


Y la llamada Ajax que estoy probando ahora mismo es:

Código:
function ajax_get_list_aceite(){

  /*var myCallback = function(data) {
      alert(data);
  };*/
  
  $.support.cors = true;
  $.ajax({
    type: "GET",
    contentType: "application/json; charset=utf-8",
    dataType: "jsonp",
    jsonp: 'callback',
    crossDomain: true,
    jsonpCallback: "myCallback",
    url: "http://xxx/descargar.php?callback=?",
    data: {id: 6, tipo:'JSON'},
    async:false,
    
    success: function (data)
    {
    alert(data);
    },
    
    error: function(request, status, error) {
      alert(status);
    alert(error);
    }
    
    
  });
  
  
}

Creo (aunque no estoy seguro) que el problema está en que la url a la que ataco me debería devolver el JSON dentro de una especie de función que se llamara "myCallback" que es el mismo nombre que yo estoy utilizando cuando pongo en la llamada anterior la línea:

Código:
jsonp: 'callback',
Estoy bastante liado con el tema la verdad jeje.

Etiquetas: ajax, funcion, javascript, js, json, mediante
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 14:43.