2012-02-13 23 views
10

estoy haciendo esta petición GET simple usando jquery ajax:ajax jquery simple petición get

 $.ajax({ 
      url: "https://app.asana.com/-/api/0.1/workspaces/", 
      type: 'GET', 
      success: function(res) { 
       console.log(res); 
       alert(res); 
      } 
     }); 

Es devolver una cadena vacía como consecuencia de ello. Si vuelvo a ir a este enlace en mi navegador, recibo:

{"status":401,"error":"Not Authorized"} 

que es el resultado esperado. Entonces, ¿por qué no funciona con ajax? gracias!

+1

has necesitado añadir tipoDatos: "jsonp" allí –

+0

@KaiQing, que ISN el problema aquí en absoluto. De lo contrario, no se llamaría al controlador de éxito. Además, la respuesta de ejemplo no es una respuesta JSONP. – Brad

+0

@PragmaOnce, verifica tus encabezados con un enmascaramiento de paquetes, como Wireshark. Sospecho que encontrará algunas diferencias entre lo que se envía desde el navegador y con la llamada AJAX. – Brad

Respuesta

6

Me parece, este es un problema de dominios cruzados, ya que no está permitido hacer solicitud a un dominio diferente.

Tienes que soluciones para este problema: - Utilizar un script de proxy, que se ejecuta en el servidor que va a foward su solicitud y se encargará de la de enviarlo al navegador O respuesta - El servicio que está haciendo la solicitud debe tener soporte JSONP. Esta es una técnica de dominio cruzado. Es posible que desee leer esto http://en.wikipedia.org/wiki/JSONP

1

Puede realizar solicitudes AJAX a aplicaciones cargadas desde el MISMO dominio y el MISMO puerto.

Además de eso, debe agregar dataType JSON si desea que el resultado se deserialice automáticamente.

$.ajax({ 
     url: "https://app.asana.com/-/api/0.1/workspaces/", 
     type: 'GET', 
     dataType: 'json', // added data type 
     success: function(res) { 
      console.log(res); 
      alert(res); 
     } 
    }); 

http://api.jquery.com/jQuery.ajax/

1

Creo que el problema es que no hay datos en la función de éxito porque la solicitud se rompe con un error 401 en su caso y, por tanto, no tiene éxito.

si utiliza

$.ajax({ 
     url: "https://app.asana.com/-/api/0.1/workspaces/", 
     type: 'GET', 
     error: function (xhr, ajaxOptions, thrownError) { 
    alert(xhr.status); 
    alert(thrownError); 
    } 
    }); 

habrá su código 401 creo (this link lo dice)

2
var dataString = "flag=fetchmediaaudio&id="+id; 

$.ajax 
({ 
    type: "POST", 
    url: "ajax.php", 
    data: dataString, 
    success: function(html) 
    { 
    alert(html); 
    } 
});