Form表单使用、ajax解决表单提交后页面跳转数据丢失的问题缺点

技术Form表单使用、ajax解决表单提交后页面跳转数据丢失的问题缺点 Form表单使用、ajax解决表单提交后页面跳转数据丢失的问题缺点一、Form表单基本使用
表单概念:在网页中主要负责 数据采集功

表单使用和ajax解决了表单提交后页面跳转数据丢失的问题。

一、Form表单基本使用

表单概念:在网页中,他主要负责数据采集功能。HTML中的表单标签,用于收集用户输入的信息,并通过表单标签的提交操作将收集到的信息提交给服务器进行处理。

表单的组成部分:

?表单标签

?表单域:包括文本框、密码框、隐藏域、全行文本框、复选框、单选框、下拉选择框、文件上传框等。

?按钮:通过将type属性设置为submit来触发表单表单的提交。

form 标签的属性

action

action:属性用于在提交表单时指定向何处发送表单数据

action的值应该是后端提供的URL地址,后端专门负责接收表单提交的数据。

当表格在未制定 ,action 属性值,action的默认值为当前页面的 URL 地址.时

请注意,:将在提交表单后立即跳转到由action属性指定的URL地址。

target

target属性用于指定打开操作URL的位置。

它有五个可选值。默认情况下,target的值为_self,这意味着动作URL在同一个框架中打开。

method

method 属性用于指定以何种方式向操作URL提交表单数据。

它有两个可选值,即get和post。

默认情况下,方法的值为get,这意味着表单数据以URL地址的形式提交给动作URL。

注意:

Get方法适用于提交少量的简单的.的数据

帖子适合提交来自大量的,复杂的文件上传.的数据

enctype

Enctype属性用于指定在 发送表单数据之前如何对数据进行编码.

有三个可选值。默认情况下,enctype为application/x-www-form-URL encoded,这意味着发送前对所有字符进行了编码。

s">表单的同步提交及缺点

什么是表单的同步提交

通过点击 submit 按钮,触发表单提交的操作,从而使页面跳转到 action URL 的行为,叫做表单的同步提交

表单同步提交的缺点

  • form 表单同步提交后,整个页面会发生跳转,跳转到 action URL 所指向的地址,用户体验很差

  • form 表单同步提交后,页面之前的状态和数据会丢失

如何解决呢

表单只复杂采集数据,Ajax负责将数据提交到服务器

二、通过Ajax提交表单数据

监听表单提交事件

jQuery 中,可以使用如下两种方式,监听到表单的提交事件

阻止表单默认提交行为

当监听到表单的提交事件以后,可以调用事件对象的 event.preventDefault() 函数,来阻止表单的提交和页面的跳转

如何快速获取表单数据

serialize() 函数

为了简化表单中数据的获取操作,jQuery提供了 serialize() 函数,语法格式如下:

好处:可以一次性获取表单的数据

示例代码:

注意:在使用 serialize() 函数快速获取表单数据时,必须为每个表单元素添加 name 属性

示列如下:

温馨提示:案例中引入的bootstrap.css、jquery.js,可自行去官网下载后再引入使用

 1 !DOCTYPE html
 2 html lang="en"
 3 
 4 head
 5   meta charset="UTF-8"
 6   meta name="viewport" content="width=device-width, initial-scale=1.0"
 7   meta http-equiv="X-UA-Compatible" content="ie=edge"
 8   titleDocument/title
 9   link rel="stylesheet" href="./lib/bootstrap.css" /
10   script src="./lib/jquery.js"/script
11   script src="./js/cmt.js"/script
12 /head
13 
14 body style="padding: 15px;"
15 
16   !-- 评论面板 --
17   div class="panel panel-primary"
18     div class="panel-heading"
19       h3 class="panel-title"发表评论/h3
20     /div
21     !-- 1 div改造成form标签并起个名字 2 监听表单的提交submit 3 serilize()用来获取表单数据  --
22     form class="panel-body" 
23       div评论人:/div
24       input type="text" class="form-control" name="username" autocomplete="off" /
25       div评论内容:/div
26       textarea class="form-control" name="content"/textarea
27 
28       button type="submit" class="btn btn-primary"发表评论/button
29     /form
30   /div
31 
32 
33   !-- 评论列表 --
34   ul class="list-group" 
35     li class="list-group-item"
36       span class="badge" style="background-color: #F0AD4E;"评论时间:/span
37       span class="badge" style="background-color: #5BC0DE;"评论人:/span
38       Item 1
39     /li
40   /ul
41 
42 /body
43 
44 /html

cmt.js文件

 1 $(function () {
 2   // 获取图书列表数据
 3   function getNewsList() {
 4     $.ajax({
 5       type: "GET",
 6       url: "http://www.liulongbin.top:3006/api/cmtlist",
 7       success: function (res) {
 8         if (res.status !== 200) return alert("获取图书列表失败!!");
 9         // 获取图书成功
10         // 把数据渲染到页面
11         var rows = [];
12         $.each(res.data, function (i, item) {
13           var str = `li class="list-group-item"
14        span class="badge" style="background-color: #F0AD4E;"评论时间:${item.time}/span
15        span class="badge" style="background-color: #5BC0DE;"评论人:${item.username}/span
16        ${item.content}
17       /li`;
18           rows.push(str);
19         });
20         $("#cmt-list").empty().append(rows.join(""));
21       },
22     });
23   }
24   getNewsList();
25   // 表单功能
26   $("#formAddCmt").on("submit", function (e) {
27     //阻止表单默认提交行为
28     e.preventDefault();
29     // 一次性获取表单的数据
30     var data = $(this).serialize();
31     $.ajax({
32       type: "POST",
33       url: "http://www.liulongbin.top:3006/api/addcmt",
34       data,
35       success: function (res) {
36         if (res.status !== 200) return alert("发表评论列表失败");
37         getNewsList();
38         //重置表单
39         // $("#formAddCmt")[0]转换成原生DOM
40         $("#formAddCmt")[0].reset();
41       },
42     });
43   });
44 });

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/36341.html

(0)

相关推荐

  • 宝宝体温多少度算正常,宝宝正常体温范围是多少

    技术宝宝体温多少度算正常,宝宝正常体温范围是多少作为新手妈妈,最担心的就是照顾不好孩子,测体温就成了判断孩子健康是否有异常的方法之一,宝宝正常体温范围是多少宝宝体温多少度算正常?测量体温一般常用3个部位,即口腔、腋窝及肛

    生活 2021年10月25日
  • 信号量学习

    技术信号量学习 信号量学习(一)概念信号量是一个整数,这个整数允许多进程或多线程同步他们的操作。这个整数必须大于等于0.
    linux库函数中,类似有名映射、匿名映射,有名管道、无名管道,信号量也有有名信

    礼包 2021年11月26日
  • 我的青春色彩作文800,我的青春一路花香作文。800字

    技术我的青春色彩作文800,我的青春一路花香作文。800字一路花香如果说生命只是一个不能重复的花季,那搏动的心便是一朵永不凋零的春花我的青春色彩作文800。早春二月,乍暖还寒之时,鹅黄隐约,新绿悄绽,昭示着生命的勃勃,那

    生活 2021年10月27日
  • Redis集群主从模式的示例分析

    技术Redis集群主从模式的示例分析这篇文章主要介绍了Redis集群主从模式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。redis集群主从模式

    攻略 2021年11月15日
  • 不同程序员的Python代码风格有哪些

    技术不同程序员的Python代码风格有哪些这篇文章主要讲解了“不同程序员的Python代码风格有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“不同程序员的Python

    攻略 2021年11月18日
  • 代理ip服务器要遵循的关键步骤有哪几个

    技术代理ip服务器要遵循的关键步骤有哪几个代理ip服务器要遵循的关键步骤有哪几个,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。代理ip服务器要遵循几个关键步

    攻略 2021年10月28日