JQuery.ajax提供contentType
属性来定义请求数据类型。
此外,content-type
可以由headers
属性设置。
它们之间有什么区别吗?
$.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"},
...
});
答案 0 :(得分:4)
来自jQuery源代码。 Example = ReplaceSafe(Example, new[] {new KeyValuePair<string, string>("OK", "true"), new KeyValuePair<string, string>("LOK", "false")});
选项的唯一用法是:
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]);
}
时,jQuery会额外检查您的请求是否包含任何实际数据。如果不是,则contentType
标头不会添加到标头中。
PS:我只检查了jQuery2.1.3的代码,但我怀疑它与其他任何版本的不同
答案 1 :(得分:0)
我知道这个问题已经过时了,但今天我们遇到了与此主题相关的问题。
如果您的数据包含连续的问号,则jQuery的行为在设置contentType
属性或content-type
标题之间会有所不同。
根据以下链接,contentType
属性是最佳选择。否则,jQuery将假定您正在尝试使用jsonp
。
Uncomprehensible jQuery $.ajax() behavior when data contains consecutive question marks