2013-11-22 75 views
8

Tôi đang cố gắng để thực hiện cuộc gọi api với ajax jquery, tôi phải làm việc curl cho api, nhưng ajax của tôi là ném HTTP 500

Tôi có một lệnh curl làm việc đó trông như thế này:

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

tôi đã cố gắng ajax như thế này, nhưng nó không làm việc:

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

tôi thiếu gì?

+0

Trừ khi API hỗ trợ yêu cầu miền chéo với CORS, bạn không thể! Tuy nhiên, bạn có thể thực hiện cuộc gọi ajax đến máy chủ, và sau đó cho phép máy chủ thực hiện các công cụ cURL. – adeneo

+0

@adeneo Tôi đang sử dụng bao bì tùy chỉnh không chặn yêu cầu miền chéo, giả sử đây là cùng một nguồn gốc, làm thế nào để tôi làm việc này? – krisrak

Trả lời

18

Theo mặc định $ .ajax() sẽ chuyển đổi data thành một chuỗi truy vấn, nếu chưa được một chuỗi, vì data đây là một đối tượng, thay đổi data thành một chuỗi và sau đó thiết lập processData: false, do đó nó không được chuyển đổi sang chuỗi truy vấn.

$.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

Cảm ơn, điều này đã trả lời câu hỏi của tôi, tại đây http://stackoverflow.com/questions/30992688/creating-task-using-wunderlist-api/31015511#31015511 –

Các vấn đề liên quan