博学谷学习记录 | 学习总结,用心分享 | 前端学习之Ajax(二)

表单是网页中用于收集数据的组件,包括表单标签、表单域和按钮。数据提交涉及GET/POST请求,普通数据和文件上传。文件上传使用FormData对象,而JSON数据用于结构化的数据传输,支持对象和数组格式。JSON.parse()和JSON.stringify()分别用于将JSON字符串转为JS对象和反之。
摘要由CSDN通过智能技术生成

表单

1 表单是什么

表单是在网页中负责收集数据的一种容器,它由三个部分组成:表单标签、表单域以及表单按钮。

表单标签写作<form></form>,其作用是将页面上指定的区域划定为表单区域;表单域则是提供了采集信息的渠道,常见的表单域有 input 、textarea 、select等;表单按钮是用户提交信息的一种方式,当用户点击按钮后就会触发表单的提交操作,从而把采集到的信息提交给服务器。 

<form class="form-horizontal">
          <div class="form-group">
              <label for="inputEmail3" class="col-sm-2 control-label">用户名</label>
              <div class="col-sm-3">
                  <input type="text" class="form-control" placeholder="用户名" name="username" id="username">
              </div>
          </div>

          <div class="form-group">
              <label for="inputEmail3" class="col-sm-2 control-label">密码</label>
              <div class="col-sm-3">
                  <input type="password" class="form-control" placeholder="密码" name="password" id="password">
              </div>
          </div>

          <div class="form-group">
              <div class="col-sm-offset-2 col-sm-10">
                <input type="checkbox" name="optionsRadios" id="optionsRadios1" value="option1">
                <span>Remember me</span>
              </div>
          </div>

          <div class="form-group">
              <div class="col-sm-offset-2 col-sm-10">
                  <button type="submit" class="btn btn-default">sign in</button>
              </div>
          </div>
      </form>

2 上传数据 

2.1 数据类型

 

2.2 普通数据提交

常见的普通数据就是 GET 请求里的查询参数 params 以及 POST 请求里的请求体 data 。

2.3 文件上传

利用WebAPI提供的 FormData 来实现对文件的存储,然后利用 Ajax 技术实现文件的上传功能。

FormData本身并不能存储需要上传的问题,而是利用 FormData() 构造函数创建一个对象,然后将文件存储在这个对象里。

利用 FormData() 创建的对象能够使用 append 方法,向对象中添加键值对数据,其中表示数据项的名字,必须是字符串,而则表示数据项的值,可以是任意类型。

    <script>

      const fd = new FormData()

      fd.append('username','jack')
      fd.append('age',20)
      fd.append('avatar', 图片文件) //值为文件类型
    </script>

2.4 JSON格式数据上传

1.JSON数据格式

用字符串的方式来表示的对象或数组类型的数据,叫做 JSON 数据,其有两种格式:对象格式 和 数组格式。

2.对象格式的JSON数据

对象格式的 JSON 数据,最外层使用 { } 进行包裹,内部的数据为 key: value 的键值对结构。

key 必须使用英文的双引号进行包裹(必须使用英文双引号!必须使用英文双引号!必须使用英文双引号!)
② value 的值只能是字符串(必须双引号!必须双引号!必须双引号!)数字布尔值null数组对象类型可选类型只有这 6 种,没有undefined

    <script>
      const jsonObj = `{
      "name":"jackie",
      "age":18,
      "married":false,
      "hobby":null,
      "work":['程序员','网约车司机'],
      "address":{
        'province':'河北省',
        'city':'石家庄市',
      }
    }`
    </script>

3.数组格式的JSON数据

数组格式的 JSON 数据,最外层使用 [ ] 进行包裹,内部的每一项数据之间使用英文逗号( , )分隔,其中每一项的值类型只能是字符串(必须双引号!必须双引号!必须双引号!)、数字、布尔值、null、数组、对象这 6 种类型之一。

    <script>

      const jsonArr = `[
        "前端",
        2023,
        true,
        null,
        ["html", "css"],
        { "name": "zs", "age": 20 }
      ]`

    </script>

3.将 JSON 数据转换为 JS 数据

调用浏览器内置的 JSON.parse() 函数,可以把 JSON 格式的字符串转换为 JS 数据,

    <script>
      const jsonObj = `{
        "name":"jackie",
        "age":18,
        "married":false,
        "hobby":null,
        "work":["程序员","网约车司机"],
        "address":{
          "province":"河北省",
          "city":"石家庄市"
        }
      }`;

      console.log(JSON.parse(jsonObj));

        const jsonArr = `[
          "前端",
          2023,
          true,
          null,
          ["html", "css"],
          { "name": "zs", "age": 20 }
        ]`

      console.log(JSON.parse(jsonArr));

    </script>

4.将 JS 数据转换为 JSON 数据 

调用浏览器内置的 JSON.stringify() 函数,可以把 JS 数据转换为 JSON 格式的字符串,

    <script>

      const jsObj = {
        'name':'小红',
        'age': 18,
        'hobby':['jogging','cooking'],
        'address':{
          'province':'Hebei',
          'city':'shijiazhuang'
        }
      }

      console.log(JSON.stringify(jsObj));

      let jsArr = ['小红',18,'jogging','cooking']

      console.log(JSON.stringify(jsArr));
    </script>

 5.序列化和反序列化

把真实数据转换为字符串的过程,叫做序列化;把字符串转换为真实数据的过程,叫做反序列化。

6.JSON 文件的语法要求
JSON文件语法严格遵守以下的 6 条规则:
属性名必须使用双引号包裹
字符串类型的值必须使用双引号包裹,不允许使用单引号表示字符串
JSON 中不能写注释
④ JSON 的最外层必须是对象或数组格式
⑤ 不能使用 undefined 或函数作为 JSON 的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值