2013-11-22 10 views
8

Sto cercando di effettuare una chiamata API con jquery ajax, ho lavoro ricciolo per l'API, ma il mio ajax sta gettando HTTP 500

Ho un comando di ricciolo di lavoro che assomiglia a questo:

curl -u "username:password" -H "Content-Type: application/json" -H "Accept: application/json" -d '{"foo":"bar"}' http://www.example.com/api 

ho provato ajax come questo, ma non funziona:

$.ajax({ 
    url: "http://www.example.com/api", 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader("Authorization", "Basic " + btoa("username:password")); 
    }, 
    type: 'POST', 
    dataType: 'json', 
    contentType: 'application/json', 
    data: {foo:"bar"}, 
    success: function (data) { 
     alert(JSON.stringify(data)); 
    }, 
    error: function(){ 
     alert("Cannot get data"); 
    } 
}); 

che cosa mi manca?

+0

A meno che l'API non supporti la richiesta di dominio incrociato con CORS, non è possibile! È comunque possibile effettuare la chiamata ajax sul lato server e quindi lasciare che il server esegua il file cURL. – adeneo

+0

@adeneo Sto usando un packaging personalizzato che non blocca la richiesta cross domain, assumendo che questa sia la stessa origine, come faccio a far funzionare tutto questo? – krisrak

risposta

18

di $ .ajax default() convertirà data ad una stringa di query, se non è già una stringa, dal momento che data qui è un oggetto, cambiare il data in una stringa e quindi impostare processData: false, in modo che non viene convertito in stringa della domanda.

$.ajax({ 
    url: "http://www.example.com/api", 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader("Authorization", "Basic " + btoa("username:password")); 
    }, 
    type: 'POST', 
    dataType: 'json', 
    contentType: 'application/json', 
    processData: false, 
    data: '{"foo":"bar"}', 
    success: function (data) { 
     alert(JSON.stringify(data)); 
    }, 
    error: function(){ 
     alert("Cannot get data"); 
    } 
}); 
+1

Grazie, questo ha risposto alla mia domanda, qui http://stackoverflow.com/questions/30992688/creating-task-using-wunderlist-api/31015511#31015511 –