2011-10-11 54 views
5

Tôi đang cố gắng sử dụng đoạn mã sau để gửi một yêu cầu POST:jQuery POST yêu cầu thực gửi như GET

$.ajax({ 
    type: "post", 
    url: 'http://api.com/'+apiUsername+'/'+apiBucket+'/elements/add', 
    dataType: 'jsonp', 
    contentType: "application/json", 
    data: JSON.stringify({ 
     username: apiUsername, 
     api_key: APIkey, 
     elementPermalink: tURL 
    }), 
    success: function() { 
     console.log('posted!'); 
    } 
}); 

Tuy nhiên, này luôn đi qua như một yêu cầu GET, không phải là một yêu cầu POST, và máy chủ API do đó từ chối nó. Tại sao jQuery nhấn mạnh vào việc thực hiện yêu cầu GET này?

(Đây là cố ý cross-domain, nhưng nó JSONP nên đó không phải là một vấn đề.)

Trả lời

20

JSONP là một GET chỉ nên dataType: 'jsonp', sẽ luôn là một được

Hãy suy nghĩ về JSONP như thế này:

<script src="http://url.com/?query=string"></script> 

Vì đó là cách jsonp nhận được xung quanh tên miền chéo, nó chỉ có thể là một yêu cầu nhận được.

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