POST 提交数据的几种方式

一.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/xmlapp