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)

相关推荐

  • Redis数据结构中的String类型有哪些

    技术Redis数据结构中的String类型有哪些这篇文章主要介绍“Redis数据结构中的String类型有哪些”,在日常操作中,相信很多人在Redis数据结构中的String类型有哪些问题上存在疑惑,小编查阅了各式资料,

    攻略 2021年12月10日
  • MySQL应该学习的6件事是什么

    技术MySQL应该学习的6件事是什么本篇内容介绍了“MySQL应该学习的6件事是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够

    攻略 2021年12月3日
  • 体表面积计算公式,人体体表面积的计算公式是什么

    技术体表面积计算公式,人体体表面积的计算公式是什么(一)计算人体表面积的公式较多,但大多数可写成(1)或(2)的形式.SA=cHα1Wα2
    (1) 这里SA为人体表面积(m2);H为身高(cm);W为体重(kg);c,α

    生活 2021年10月27日
  • nginx配置文件是怎么样的

    技术nginx配置文件是怎么样的这篇文章将为大家详细讲解有关nginx配置文件是怎么样的,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。#运行用户user www-data; #启

    攻略 2021年11月21日
  • cufes2,CUFES2的化合价怎么判断

    技术cufes2,CUFES2的化合价怎么判断二硫化亚铁铜:S是负2价cufes2,Fe既然叫亚铁,那就是正2价,Cu也只能是正2价了。另外根据常识如果铁是正3价,强氧化性,那么跟负2价的S不能共存。
    如果是配平的话,用

    生活 2021年10月24日
  • web中HTTP 400错误请求无效的解救方法有哪些

    技术web中HTTP 400错误请求无效的解救方法有哪些这篇文章主要介绍“web中HTTP 400错误请求无效的解救方法有哪些”,在日常操作中,相信很多人在web中HTTP 400错误请求无效的解救方法有哪些问题上存在疑

    攻略 2021年11月5日