2013-11-22 4 views
8

Ich versuche, einen API-Aufruf mit jQuery Ajax zu machen, habe ich curl Arbeits für die api, aber meine Ajax wirft HTTP 500

Ich habe einen curl Befehl arbeiten, dass wie folgt aussieht:

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

ich ajax wie dies versucht, aber es funktioniert nicht:

$.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"); 
    } 
}); 

Was bin ich?

+0

Sofern die API Cross-Domain-Anfrage mit CORS unterstützt, können Sie nicht! Sie können jedoch den Ajax-Aufruf auf der Serverseite ausführen und dann den cURL-Code vom Server verarbeiten lassen. – adeneo

+0

@adeneo Ich benutze benutzerdefinierte Verpackung, die keine Cross-Domain-Anfrage blockiert, vorausgesetzt, dies ist der gleiche Ursprung, wie bekomme ich das zum Funktionieren? – krisrak

Antwort

18

standardmäßig $ Schnipsel() konvertieren data auf einen Abfrage-String, wenn nicht bereits ein String, da data hier ist ein Objekt, das data in eine Zeichenfolge ändern und dann processData: false, so dass es nicht umgesetzt wird Abfragezeichenfolge

+1

Danke, das beantwortet meine Frage hier http://stackoverflow.com/questions/30992688/creating-task-using-wunderlist-api/31015511#31015511 –