contentType (default: 'application/x-www-form-urlencoded; charset=UTF-8')
Type: Boolean or String
When sending data to the server, use this content type. Default is "application/x-www-form-urlencoded; charset=UTF-8", which is fine for most cases. If you explicitly pass in a content-type to $.ajax(), then it is always sent to the server (even if no data is sent). As of jQuery 1.6 you can pass false to tell jQuery to not set any content type header. Note: The W3C XMLHttpRequest specification dictates that the charset is always UTF-8; specifying another charset will not force the browser to change the encoding. Note: For cross-domain requests, setting the content type to anything other than application/x-www-form-urlencoded, multipart/form-data, or text/plain will trigger the browser to send a preflight OPTIONS request to the server.
一般是用 application/x-www-form-urlencoded,也就是默认值,上传文件通常是用 multipart/form-data,现在很多使用 JSON 接口的也用后面这种。text/plain 我平时见得不多。
补充
jQuery 的 ajax 要发送 application/json 请求需要
contentType: "application/json;charset=UTF-8"
processData: false
data: stringify(aObject)
比如
$.ajax("https://blablabla.com/", {
contentType: "application/json;charset=UTF-8",
dataType: "json",
type: "post",
processData: false,
data: JSON.stringify({
user: {
name: "hello",
pass: "world"
},
stamp: new Date()
})
});