目录

一、Form表单

1.1 标签属性

1.1.1 action

1.1.2 target

1.1.3 method

1.1.4 enctype

1.2 表单的同步提交及缺点

1.3 通过Ajax提交表单数据

1.3.1 监听表单提交事件

1.3.2 阻止表单的默认行为

1.4 serialize()方法

二、模板引擎

2.1 art-template使用步骤

2.2 art-template标准语法

2.3 正则与字符串操作


一、Form表单

在网页中主要负责数据采集功能。由表单标签、表单域、表单按钮组成。

1.1 标签属性

用来规定如何把采集到的数据发送到服务器。

1.1.1 action

action属性值应该是后端提供的一个URL地址。

  • 当<form>表单在未指定action属性值得情况下,action的默认值为当前页面的URL地址。
  • 当提交表单后,页面会立即跳转到action属性指定的URL地址。

1.1.2 target

1.1.3 method

规定以何种方式把把表单数据提交到action URL。

  • get :适合提交少量的简单的数据,url地址中会显示数据
  • post :适合提交大量复杂或包含文件上传的数据,url地址中不会显示数据,安全性高

1.1.4 enctype

规定在发送表单数据之前如何对数据进行编码。

1.2 表单的同步提交及缺点

表单的同步提交:通过点击submut按钮,触发表单提交的操作,从而使页面跳转到aciton URL的行为。

缺点:整个页面会发生跳转,跳转到action URL所指向的地址,用户体验感差。页面之前的状态和数据会丢失。

解决方案:表单只负责采集数据,Ajax负责将数据提交到服务器。

1.3 通过Ajax提交表单数据

1.3.1 监听表单提交事件

 $('表单名').submit(function (e) {};

 $('表单名').on('submit', function(e) {};

1.3.2 阻止表单的默认行为

e.preventDefault();

1.4 serialize()方法

格式:$(selector).serialize();

快速获取表单数据;必须为每个表单元素添加name属性

案例展示

效果图:

代码展示:(html+js)

<!-- 评论面板 -->
<div class="panel panel-primary"><div class="panel-heading"><h3 class="panel-title">发表评论</h3></div><form class="panel-body" id="formAddCmt"><div>评论人:</div><input type="text" class="form-control" name="username" autocomplete="off" /><div>评论内容:</div><textarea class="form-control" name="content"></textarea><button type="submit" class="btn btn-primary">发表评论</button></form>
</div><!-- 评论列表 -->
<ul class="list-group" id="cmt-list"><li class="list-group-item"><span class="badge" style="background-color: #F0AD4E;">评论时间:</span><span class="badge" style="background-color: #5BC0DE;">评论人:</span> Item 1</li>
</ul>
function getCommentList() {$.ajax({method: 'GET',url: 'http://www.liulongbin.top:3006/api/cmtlist',data: {},success: function(res) {if (res.status !== 200) return alert('获取评论列表失败!');// console.log('获取数据成功');var rows = [];$.each(res.data, function(i, item) { //循环拼接字符串var str = '<li class="list-group-item"><span class="badge" style="background-color: #F0AD4E;">评论时间:' + item.time + '</span><span class="badge" style="background-color: #5BC0DE;">评论人:' + item.username + '</span>' + item.content + '</li>';rows.push(str);})$('#cmt-list').empty().append(rows.join(''))}});
};
getCommentList();$(function() {$("#formAddCmt").submit(function(e) {e.preventDefault();var data = $(this).serialize();console.log(data);$.post('http://www.liulongbin.top:3006/api/addcmt', data, function(res) {if (res.status !== 201) {return alert('发表评论失败!')}getCommentList();$('#formAddCmt')[0].reset();});});});

二、模板引擎

根据程序员指定的模板结构和数据,自动生成一个完整的HTML页面。

减少了字符串的拼接、使结构代码更清晰、使代码更易于阅读和维护。

2.1 art-template使用步骤

  1. 导入模板引擎:template-web.js
  2. 渲染函数(定义数据)
  3. 模板的html必须定义到script(定义模板)
  4. 调用 template函数
  5. 渲染HTML结构

2.2 art-template标准语法

标准语法:在{{}}内可以进行变量输出或循环数组等操作
原文输出
    {{@  value}}
条件输出
    {{if v1}} 输出内容 {{else if v2}} 输出内容 {{/if}}
    {{if value}}输出内容{{/if}}
循环输出
    {{each arr}}     {{$index}},{{$value}}      {{/each}}

2.3 正则与字符串操作

exec()函数
    用于检索字符串中的正则表达式的匹配 
    存在返回匹配值,匹配失败返回null 
提取分组
    正则表达式中()包起来的内容表示一个分组,可以通过分组来提取自己想要的内容
replace()函数
    字符串的replace操作str.replace(被替代的元素, 替代元素]);

综合案例

效果图:

导入相关文件

代码展示:(html+js)

 <div class="container"><!-- Logo --><img src="./images/taobao_logo.png" alt="" class="logo" /><div class="box"><!-- tab 栏 --><div class="tabs"><div class="tab-active">宝贝</div><div>店铺</div></div><!-- 搜索区域(搜索框和搜索按钮) --><div class="search-box"><input id="ipt" type="text" class="ipt" placeholder="请输入要搜索的内容" /><button class="btnSearch">搜索</button></div><!-- 搜索建议列表 --><div id="suggest-list"></div></div></div>
 <script type="text/html" id="tpl-suggestList">{{each result}}<!-- 搜索建议项 --><div class="suggest-item">{{$value[0]}}</div>{{/each}}</script>
<script>$(function() {//1.定义延时器IDvar timer = null;//(1)定义全局缓存对象var cacheobj = {}//2.定义防抖的函数function debounceSearch(kw) {timer = setTimeout(function() {getSuggestList(kw);}, 800)}//为输入框绑定keyup事件$('#ipt').on('keyup', function() {//3.清楚延时器clearTimeout(timer);//trim去除空格var keywords = $(this).val().trim();if (keywords.length <= 0) {return $('#suggest-list').empty().hide();}//先判断缓存中是否有数据 if (cacheobj[keywords]) {return renderSuggestList(cacheobj[keywords]);}//输入后调用debounceSearch(keywords);});function getSuggestList(kw) {$.ajax({url: 'https://suggest.taobao.com/sug?q=' + kw,dataType: 'jsonp',success: function(res) {renderSuggestList(res);}})};//渲染建议列表function renderSuggestList(res) {if (res.result.length <= 0) {return $('#suggest-list').empty().hide();}var htmlStr = template('tpl-suggestList', res);$('#suggest-list').html(htmlStr).show();//(2)将搜索结果保存到缓存对象中//获取用户输入内容,当作键var k = $('#ipt').val().trim();//需要将数据作为值,进行缓存cacheobj[k] = res;}})
</script>

前后端交互之form表单和模板引擎相关推荐

  1. 前后端交互:form表单与模板引擎

    目录 form表单 基础知识 概念 组成 常用属性 表单同步提交 概念 缺点 表单事件监听 submit监听方式 on监听方式 阻止表单默认行为 serialize 快速获取表单提交的数据 模板引擎 ...

  2. 前端_网页编程 Form表单与模板引擎(上)

    目录 一.form表单的基本使用 1. 什么是表单? 2. 表单的组成部分 3. < form>标签的基本属性 3.1 action 3.2 target 3.3 method 3.4 e ...

  3. 前端_网页编程 Form表单与模板引擎(中)

    目录 ... ... (续上篇) 四.模板引擎的基本概念 1.定义 2. 优点 五.art-template模板引擎 1.art-template模板引擎介绍 2. art-template的安装 3 ...

  4. 前端_网页编程 Form表单与模板引擎(下)

    目录 续上一篇 6. 模板引擎的实现原理 6.1 正则与字符串操作 6.1.1 基本语法 6.1.2 分组 6.1.3 字符串的replace函数 6.1.4 多次replace 6.1.5 使用wh ...

  5. form表单与模板引擎

    form表单与模板引擎 一.form表单的基本使用 1.1 什么是表单 1.2 表单的组成部分 1.3 <form>标签的属性 1.4 表单的同步提交及缺点 二.通过ajax提交表单数据 ...

  6. Form表单及模板引擎

    Form表单及模板引擎 什么是Form表单 Form表单的一些属性 表单的同步提交及优缺点 通过Ajax提交表单数据 JQuery的监听表单提交事件 取消表单默认提交行为 快速获取表单中的数据 模板引 ...

  7. 【前端】Ajax-form表单与模板引擎

    目录 一.form表单的基本使用 1.1什么是表单 1.2表单的组成部分 1.3form标签属性 1.4表单的同步提交及缺点 1.4.1什么是表单的同步提交 1.4.2表单同步提交的缺点 1.4.3如 ...

  8. python中前后端通信方法Ajax和ORM映射(form表单提交)

    后端从数据库获取数据给到前端: 第一种方式: admin.py文件代码: @admin.route('/showList') def show():# 获取数据库所有文章数据,得到一个个对象res=A ...

  9. Django之POST GET与前后端交互

    Django之META与前后端交互 1 提交表单之GET 前端提交数据与发送 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请 ...

最新文章

  1. Spring Boot 2.6.1 发布:为 Spring Cloud 2021铺路!
  2. llinux基本操作
  3. [leetcode] 198.打家劫舍
  4. CBA Opportunity creation的性能跟踪
  5. linux版_微软爱 Linux:安全杀毒软件 Defender ATP 要出 Linux 版了! | Linux 中国
  6. MAC 修改文件夹以及子文件夹和子文件权限 以及 修改文件夹owner
  7. 骁龙865确定:年底发布 支持5G!
  8. ubantu的二三事
  9. 7-16 Sort with Swap(0, i)(25 分)
  10. C#开发DIY照片书软件(C#图形图像开发)
  11. oracle 12c rman备份与恢复,12C RMAN备份恢复
  12. 使用selenium爬取艺恩网年度票房(8.16)
  13. 互联网3D数字化时代,3D产品展示开启新商机
  14. 如何消除win10文件右上角的蓝色箭头
  15. 如何用安装启动盘启动计算机,如何使用U盘启动进入PE安装系统,小编教你如何安装...
  16. 特殊儿童领间最灿烂的一缕红——我们入队了
  17. 中小学校园气象站建设方案 作用 选址 组成
  18. 百度网盘网页版视频在线倍速播放
  19. 大数据主要学习什么?
  20. 解决: XXX is already defined as case class XXX 异常

热门文章

  1. python的turtle怎么画曲线_利用 turtle库绘制简单图形
  2. 忽视警告_不要忽视下雨的风险2
  3. WIN10管理员权限设置、更改用户名被“拒绝访问”
  4. OpenWrt路由开启DDNS+端口转发进行外网访问
  5. 智能机器人与智能系统(大连理工大学庄严教授)——3.工业机器人
  6. 安卓手机查看已经连接的WIFI密码
  7. 魅族手机设置输出log
  8. Mysql操作语句大全
  9. 华为大数据HCIP认证(HCIP-Big Data Developer V2.0) 考试大纲
  10. 12864c与语言字符显示,大家看看该怎么改才能让12864液晶显示屏显示21个字符啊?...