本文介绍: ajax请求体的3种常用类型场景中的两种

请求类型contenttype

在哪:请求报文->请求头中的Content-Type字段

作用:用来标记请求内容类型

 请求头Content-Type类型                             请求体值格式
    1. application/xwwwformurlencoded     参数名=值&参数名=值 的字符串
    2. application/json                                    ‘{“参数名”: 值, “参数名”: 值} 的json字符串
    3. multipart/formdata                               FormData表单数据(常用携带文件)

值得注意的是,三种请求体的数据上传,是需要用到三种不同的方式,其中第一种(查询字符串)和第二种(json对象)方式相似,需要用到语法formserialize,而第三种(文件数据)上传则需使用语法_FormData

这里先来简单说说formserialize 表单整体获取

我们可以使用formserialize插件,获取整个表单数据

  1. 一定要先引入formserialize.js 工具
  2. 写js代码。直接调用serialize方法
  3. 注意代码格式如下:
  4. 格式1: serialize(form标签) 返回值是:查询字符串格式
  5. 格式2: serialize(form标签, { hash: true }) 返回值是: json对象
  6. 注意点:需要获取数据表单内部标签,里面应该加上name属性!
     
<body&gt;
    <form id="form"&gt;
        <div&gt;
            <!-- 用户名 --&gt;
            <span>用户名:</span>
            <input type="text" name="username">
        </div>
        <div>
            <!-- 密码: -->
            <span>登录密码:</span>
            <input type="password" name="password">
        </div>
        <div>
            <!-- 提交按钮 -->
            <button id="submit">提交</button>
        </div>
    </form>
    <script>
        document.querySelector('#submit').addEventListener('click',(e)=>{
            e.preventDefault()
            const p = serialize(document.querySelector('form'), { hash: true })
            console.log(p);
            axios({
                url:'http://ajax-api.itheima.net/api/data',
                method:'POST',
                data:p
            }).then(res=>{
               console.log(res.data.data);
            })
        })
    </script>
</body>

我们需要上传数据类型是查询字符串时,应该使用

格式1: serialize(form标签) 返回值是:查询字符串的格式

 

我们需要的上传数据类型是json对象时,应该使用

格式2: serialize(form标签, { hash: true }) 返回值是: json对象

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注