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)

相关推荐

  • 怎么使用flutter中Checkbox复选框的全选与删除

    技术怎么使用flutter中Checkbox复选框的全选与删除本篇内容介绍了“怎么使用flutter中Checkbox复选框的全选与删除”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大

    攻略 2021年10月29日
  • 南瓜发糕的做法松软又好吃,怎么蒸发糕好吃,又发又软呢

    技术南瓜发糕的做法松软又好吃,怎么蒸发糕好吃,又发又软呢我是吃货小筑,一枚专注于烘焙的美食博主,这是我在悟空问答的第573个原创回答,愿与大家一起用心探讨美食和烘焙南瓜发糕的做法松软又好吃!发糕要口感好,又发又软是有技巧

    生活 2021年10月29日
  • 基本RNN的Tensorflow实现是怎样的

    技术基本RNN的Tensorflow实现是怎样的这篇文章给大家介绍基本RNN的Tensorflow实现是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。今天我们一起看下在tensorflow中基

    攻略 2021年11月24日
  • 常用语法及示例

    技术常用语法及示例 常用语法及示例接口测试常用库:
    RequestsLibraryCollectionsJSONLibraryHttpLibrary.HTTP
    Set Global Variable
    使

    礼包 2021年11月30日
  • wei的成语,带wei(第一声)字的成语

    技术wei的成语,带wei(第一声)字的成语【危在旦夕】危险就在眼前。 【危如累卵】如垒起的蛋那样危险。喻极其危险。 【危言正色】刚直的言论和严正的态度。 【危言逆耳】正直的规劝听起来不顺耳。 【危言高论】正直而不同凡响

    生活 2021年10月20日
  • 在mysql如何查找效率慢的SQL语句

    技术在mysql如何查找效率慢的SQL语句这篇文章主要介绍在mysql如何查找效率慢的SQL语句,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、MySQL数据库有几个配置选项可以帮助我们及时捕获

    攻略 2021年10月29日