2016-12-08 30 views
1

JQuery.ajax提供contentType屬性來定義請求數據類型。 另外,content-type可以通過headers屬性來設置。'headers:{「Content-Type」:XXX}'和'contentType:XXX'有什麼區別?

他們之間的任何區別?

$.ajax({ 
    dataType: "json", 
    url: url, 
    type: 'post', 
    data: data, 
    contentType: "application/json", 
    ... 
}); 

$.ajax({ 
    dataType: "json", 
    url: url, 
    type: 'post', 
    data: data, 
    headers: {"Content-Type": "application/json"}, 
    ... 
}); 
+1

你觀察到發送請求中的任何區別不同? –

+1

IMO應該是相同的 - 在做請求之前'contentType'將被添加到標題中作爲'Content-Type'。 – Developer

回答

4

從jQuery源代碼。的contentType選項的唯一用途是:

if (s.data && s.hasContent && s.contentType !== false || options.contentType) { 
    jqXHR.setRequestHeader("Content-Type", s.contentType); 
} 

headers選項的唯一用途是:

for (i in s.headers) { 
    jqXHR.setRequestHeader(i, s.headers[i]); 
} 

唯一不同的是,使用contentType時,jQuery不會額外的檢查,看看你的要求有任何實際的數據。如果沒有,content-type標題不會被添加到標題。

PS:我查過的jQuery2.1.3唯一的代碼,但我懷疑它在任何其他版本