POST 提交数据的几种方式

一.Content-Type字段:服务器端主要根据请求头(header)中的Content-Type属性来自动获取请求主体采用的是何种编码,再对消息主体进行解析。
二.常见四种contentType

1. aplication/x-www-form-urlencoded:form表单不指定enctype时的默认属性。提交数据时,按照 key = val & key1 = val1 的方式进行编码,键值对 key 和val都进行了 URL 转码。

注意1: JQuery 的 Ajax,Content-Type 默认值都是application/x-www-form-urlencoded;charset=utf-8
在有文件提交的表单如下:

/**
     * 带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编码时候注意这个问题。

2. multipart/form-data:在我们采用form表单上传文件时,必须让form的enctyped等于这个值。

3.application/json:告诉服务端消息的主体是序列化后的 JSON 字符串。可以支持复杂的结构化数据。

4.text/xml

猜你喜欢

转载自blog.csdn.net/asd245025733/article/details/80102297
今日推荐