zoukankan      html  css  js  c++  java
  • Ajax上传文件的cache、processdata、contentType属性以及FormData对象的总结

    Ajax上传文件的cache、processdata、contentType属性以及FormData对象的总结
    前言:在之前的Ajax一次性上传多张图片并实现预览的博客中提到,如果要用 Ajax 上传文件,则需要使用 FormData 对象来作为数据,而不能使用 form 的 serialize 方法(原因是 serialize 方法得到的数据是一个字符串,其不支持二进制数据传输,因此无法上传文件)

    1.FormData对象

        var formdata = new FormData();//创建一个新的FormData对象
        //Ajax中的 data 属性就是 formdata
        formdata.append('name','value'); //使用append的方法为 formdata 对象赋值
        $.ajax({
        type:'post',
        url:'url',
        contentType:false,
        processData:false,
        cache:false,
        data:formdata,
        success:function(res){
            console.log('success');
    }
    })

    2.Ajax属性:cache、processData、contentType
    ① cache:缓存
    当发起一次请求后,会把获得的结果以缓存的形式进行存储,当再次发起请求时,如果 cache 的值是 true ,那么会直接从缓存中读取,而不是再次发起一个请求了。
    从 cache 的工作原理可以得出,cache 的作用一般只在 get 请求中使用。

    ② processData:处理数据
    默认情况下,processData 的值是 true,其代表以对象的形式上传的数据都会被转换为字符串的形式上传。而当上传文件的时候,则不需要把其转换为字符串,因此要改成false

    ③ contentType:发送数据的格式
    和 contentType 有个类似的属性是 dataType , 代表的是期望从后端收到的数据的格式,一般会有 json 、text……等
    而 contentType 则是与 dataType 相对应的,其代表的是 前端发送数据的格式

    默认值:application/x-www-form-urlencoded
    代表的是 ajax 的 data 是以字符串的形式 如 id=2019&password=123456
    使用这种传数据的格式,无法传输复杂的数据,比如多维数组、文件等

    有时候要注意,自己所传输的数据格式和ajax的contentType格式是否一致,如果不一致就要想办法对数据进行转换
    把contentType 改成 false 就会改掉之前默认的数据格式,在上传文件时就不会报错了。


    ————————————————
    版权声明:本文为CSDN博主「joey无心快语」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_41564928/article/details/90580375

  • 相关阅读:
    typora永久插入图片
    Cortex-M 处理器 hardfault 定位方法和步骤(基于Keil mdk)
    STM32之CAN ---CAN ID过滤器分析
    记一次payload绕过电脑管家免杀
    kali linux 静态地址和动态地址的设置
    mona
    武装你的浏览器--自用的火狐插件推荐
    kali linux开启ssh
    记一次腾讯云服务器centos linux可视化桌面安装并进行远程桌面登录及其安装中文包
    widows终端远程连接Linux服务器
  • 原文地址:https://www.cnblogs.com/yehuisir/p/12459198.html
Copyright © 2011-2022 走看看