2011-10-11 50 views
5

我嘗試使用下面的代碼來發送POST請求:jQuery的POST請求實際發送如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!'); 
    } 
}); 

然而,這總是經歷作爲一個GET請求,不POST請求,並且API服務器因此拒絕它。爲什麼jQuery堅持讓這個GET請求?

(這是故意跨域的,但它是JSONP所以這不是一個問題。)

回答

20

JSONP是隻得到這樣dataType: 'jsonp',總是會得到JSONP的

這樣想:

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

由於這就是jsonp如何繞過跨域,它只能是一個get請求。