AJAX 提交数据使用

在这里插入图片描述

1.form表单提交数据的用法:

在网页中,form表单主要负责数据采集功能 例如:采集用户的登录信息 采集用户的详细信息
form表单三部分组成:表单标签 表单域 表单按钮
注意:每个表单域必须包含 name 属性,否则用户填写的信息无法被采集到!
当表单数据填写完毕后,用户点击表单按钮,会触发表单的提交操作,从而把采集到的数据提交给服务器。
在这里插入图片描述

1. 标签最重要的 3 个属性

分别是 action、method 和 enctype。简介信息如下表所示:

属性	可选值	说明action : 接口的url属性	把表单采集到的数据 提交到哪个接口中method : get或 POST	数据提交的方式 默认值GETenctype :application/x-www-form-urlencodedmultipartform-datatext/plain(很少用)

注意:enctype 属性只能搭配 POST 提交方式一起使用;如果是 GET 提交,则 enctype 没有意义!

2.以 GET 方式提交表单数据

在 标签上,通过 action 属性指定提交的 URL 地址,通过 method 属性指定提交的方式为 GET:
在这里插入图片描述
注意:由于 method 属性的默认值就是 GET,因此上述的 method=“GET” 可以被省略!

3.以 POST 方式提交表单数据:

在 标签上,通过 action 属性指定提交的 URL 地址,通过 method 属性指定提交的方式为 POST,并通过 enctype 属性指定数据的编码方式为 application/x-www-form-urlencoded:
在这里插入图片描述
注意:由于 enctype 的默认值就是 application/x-www-form-urlencoded,因此上述的 enctype 可以被省略!

4.enctype 三个可选值之间的区别:

只有 method 属性的值等于 POST 时,才有必要设置 enctype 属性。它的属性可选值有三个:
属性值	是否常用	应用场景application/x-www-form-urlencoded	是	表单中不包含文件上传的场景,适用于普通数据的提交multipart/form-data	是	表单中包含上传文件的场景text/plain	否	无

5.表单提交的问题和解决方案

提交表单数据的时候,整个页面会发生跳转,跳转到了 action 属性所指向的 url 地址,用户无法停留在当前的页面,导致体验很差。
产生问题的原因: 表单身兼数职:既负责采集数据,又负责把数据提交到服务器!表单的默认提交行为会导致页面的跳转。

解决方案: 表单只负责采集数据;Ajax 负责将数据提交到服务器。(符合:职能单一的原则)

通过 Ajax 提交表单采集到的数据,可以防止表单默认提交行为导致的页面跳转问题,提高用户的体验。
○ 监听表单的 submit 提交事件
○ 阻止默认提交行为
○ 基于 axios 发起请求
○ 指定请求方式、请求地址
○ 指定请求体数据

document.querySelector('form').onsubmit = function (e) {
   
      e.preventDefault()
  	axios({
   
    	method: 'POST',
    	url: 'http://www.liulongbin.top:3009/api/form',
    	data: {
   
      	username: document.querySeletor('[name="username"]').value,
      	password: document.querySeletor('[name="password"]').value
    }
  }).then(({
    data: res }) => {
   
    console.log(res)
  })
})
6.jQuery 的 serialize() 函数

能够一次性获取到表单中采集具有name属性的的数据,它的语法格式如下:

//$('form').serialize( )
<script>
        // 1.监听表单的提交事件
        $("form").submit(function(e){
   
           //阻止事件的提交行为
           e.preventDefault()
            // jquery中的serialize()收集表单中的具有name属性的值
            // let str = $(this).serialize()
            // console.log(str); //username=jack&password=123456

           //ajax提交数据,form不用提交数据. 好处,页面不会发生跳转
           axios({
   
               method:'post',
               url:'http://www.liulongbin.top:3009/api/form',
            //    data:{
   
            //        username:$('[name="username"]').val(),
            //        password:$('[name="password"]').val()
            //    }
               data:$(this).serialize()
           }).then(({
   data:res})=>{
   
            console.log(res);
           })
        })
    </script>

2.axios 简化写法

为了简化开发者的使用过程,axios 为所有支持的请求方法提供了别名:
axios.get(url[, config])
axios.delete(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])

1.axios.get() 的用法
   <script>
        // 设置axios全局根路径
        axios.defaults.baseURL = 'http://www.liulongbin.top:3009'
        // axios.get(地址)  发送请求不带参数
        $("button").eq(0).click(function(){
   
            axios.get('/api/get').then((res)=>{
   
                console.log(res);
            })
        })

        // axios.get(地址,{params:值})  发送请求带参数
        $("button").eq(1).click(function
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值