一.Content-Type字段:服务器端主要根据请求头(header)中的Content-Type属性来自动获取请求主体采用的是何种编码,再对消息主体进行解析。
二.常见四种contentTypejavascript
1. aplication/x-www-form-urlencoded
:form表单不指定enctype时的默认属性。提交数据时,按照 key = val & key1 = val1
的方式进行编码,键值对 key 和val都进行了 URL 转码。java
注意1: JQuery 的 Ajax,Content-Type 默认值都是application/x-www-form-urlencoded;charset=utf-8
在有文件提交的表单以下:web
/** * 带file的表单提交 */
$("#cms-file-submit").click(function(){
var data = $("#cms-form").serializeArray();
var fm = new FormData()
$(data).each(function(i){
fm.append(this.name, this.value);
});
fm.append('file', $("#file")[0].files[0]);
// console.log(fm);
// 将获取到的数据post给服务器
url = SCOPE.save_url;
var jump_url = "";
$.ajax(
{
url:url,
type: 'POST',
data: fm,
dataType:'JSON',
cache: false,
contentType: false,
processData: false,
success:function(){
//1.成功的处理
alert(1);
}
}
);
});
所以咱们在使用$.ajax()时要设置
contentType: false
:(默认: “application/x-www-form-urlencoded”) 发送信息至服务器时内容编码类型.
processData: false
:(默认: true) 默认状况下,经过data选项传递进来的数据,若是是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 application/x-www-form-urlencoded
。
缘由:咱们给的data就是已经用FormData编码好的数据,不须要jQuery进行字符串转换。
注意2: JQuery中采用的是utf-8编码因此在作gbk编码时候注意这个问题。ajax
2. multipart/form-data
:在咱们采用form表单上传文件时,必须让form的enctyped等于这个值。json
3.application/json
:告诉服务端消息的主体是序列化后的 JSON 字符串。能够支持复杂的结构化数据。服务器
4.text/xml
app