Ajax — 第二天

Ajax-02

今天内容:

  • 安装浏览器插件

  • 聊天机器人案例

  • Form表单提交

  • 模板引擎(新的概念,难点)

  • 两个案例

Chrome浏览器插件安装

安装步骤

下载插件的网站:

  • https://www.gugeapps.net/ 无需扫码

  • http://www.cnplugins.com/ 需要扫二维码验证

  • 从上述两个网站下载的插件,和从Chrome商店下载的插件是一样的。只不过Chrome商店被和谐了,打不开。

如何安装使用插件

  • 下载下来的插件形如 JSONView.crx。可以把后缀换成 zip
  • 使用解压软件解压它,得到一个文件夹

在这里插入图片描述

  • Chrome --> 更多工具 --> 扩展程序 --> 打开开发者模式 --> 加载已解压的扩展程序 --> 选择上一步解压得到的文件夹

  • 最终效果

在这里插入图片描述

jsonview插件

美化JSON的插件

postman

测试接口的工具

在这里插入图片描述

在这里插入图片描述

聊天机器人案例

案例演示与分析

  • 聊天的时候,每个人说的话,用一 <li> 标签标示
    • 小思同学说的话,<li class="left_word">
    • 我们说的话,<li class="right_word">
  • 后面有一个 <audio src=""> ,用于播放语音,我们只需要设置src属性为一个音频文件地址即可自动播放
  • 需要我们手动加载 scroll.js ,它里面封装的一个函数 resetui() ,用于重置聊天区的滚动条。

渲染自己说的话

点击发送按钮的时候,获取输入框的值,然后调用函数。

// 单击事件
// 给 发送 注册单击事件 $('#btnSend').on('click', function () {// 1. 渲染自己说的话let myWord = $('#ipt').val().trim(); // 取得输入框的值renderMyWord(myWord);// 2. 得到对方的回应,并渲染到页面中// 3. 播放语音});
// 封装一个函数,渲染自己说的话function renderMyWord (myWord) {let str = `<li class="right_word"><img src="img/person02.png" /> <span>${myWord}</span></li>`;// 把str放到ul后面$('#talk_list').append(str);// 清空输入框的内容$('#ipt').val('');// 重置滚动条,否则后面说的话看不见了resetui(); // scroll.js 里面封装的函数,作用是可以重置滚动条// 渲染机器人的回应renderRobotWord(myWord);}

获取并渲染机器人说的话

// 获取机器人的回应,并渲染到页面中function renderRobotWord (myWord) {// 按照接口文档,发送ajax请求。获取机器人的回应$.get('http://www.liulongbin.top:3006/api/robot', {spoken: myWord}, function (res) {// console.log(res);if (res.message === 'success') {// 组装一个li标签。把机器人的回应渲染到页面中let str = `<li class="left_word"><img src="img/person01.png" /> <span>${res.data.info.text}</span></li>`;// 把str追加到ul中$('#talk_list').append(str);// 重置滚动条resetui();// 调用把文字转成语音的函数playVoice(res.data.info.text);}});}

把机器人说的话转成语音

// 播放语音function playVoice (text) {$.get('http://www.liulongbin.top:3006/api/synthesize', {text: text}, function (res) {// console.log(res);if (res.status === 200) {// 设置 audio 标签的src属性$('#voice').attr('src', res.voiceUrl);}});}

输入框按回车和点击发送一样的效果

// 优化 - 在输入框里按回车,也能够发送(让按回车的效果和点击发送按钮的效果一样)$('#ipt').keyup(function (e) {// 键盘弹起之后,触发的函数// 获取键盘的keyCode值// let keyCode = e.keyCode; // jQuery封装的属性,可以获取到键盘的keyCodelet keyCode = e.which; // jQuery封装的属性,也可以获取到键盘的keyCode// 判断,是否按的是回车键if (keyCode === 13) {// 说明按了回车键// 解决方案一:renderMyWord($(this).val().trim());// 解决方案二:触发 发送按钮的单击事件// $('#btnSend').click(); // $('#btnSend').trigger('click');}});

attr和prop

prop适合用在属性的值是布尔值的情况下。比如:

  • <input readonly />
  • <input type="checkbox" checked />
  • <input type="radio" checked />
  • <input disabled />
  • <select> <option selected></option> </select>

除此之外,其他的任何属性都用 attr();

表单的组成

  • form标签

  • 表单域

    • input type=“text”
    • input type=“password”
    • input type=“checkbox”
    • input type=“radio”
    • input type=“file” 文件域
    • input type=“hidden” 隐藏域
    • select>option
    • textarea 多行文本域
  • 按钮

    <!--下面的按钮 会 造成表单的提交-->
    <button> 提交 </button>   ====  <button  type="submit"></button>   ====   <input type="submit" value="提交" /><!--下面的按钮 不会 造成表单的提交-->
    <button  type="button">提交<button>  =====   <input type="button" value="提交" />
    

form标签的属性

<!--- 
action 属性,表示表单提交的地址,默认空,表示提交到当前页面
method 属性,表示提交方式,可选GET和POST,默认是GET
--->
<form action="http://www.liulongbin.top:3006/api/addbook" method="POST"><input type="text" name="username"><br><button type="submit">提交</button>
</form>

在这里插入图片描述

提前了解:

  • GET方式提交表单,我们输入的值(请求参数)会拼接到url后面。
  • POST方式提交表单,请求参数,不会拼接到url上。

在这里插入图片描述

推荐的提交表单的方案

  • 监听表单的提交事件
  • 阻止表单提交(阻止标签的默认行为)
  • 使用JS代码来收集表单数据
  • 将收集到的数据,通过ajax来提交

使用jQuery提供的方法来快速收集表单数据

  • $('form').serialize(); – 得到一个字符串

    bookname=aaa&author=bbb&publisher=ccc
    
  • $('form').serializeArray(); – 得到一个数组

    [{name: 'bookname', value: 'aaa'},{name: 'author', value: 'bbb'},{name: 'publisher', value: 'ccc'}
    ]
    

细节问题:

  • 表单域必须指定name属性。否则,serialize或serializeArray不会收集到值
  • 使用serialize和serializeArray得到的结果,可以直接作为ajax请求的data使用

评论案例

监听表单提交事件说明

监听表单提交事件,可以有下面两种写法:

  • $('form').submit(事件处理函数) — 推荐方案
  • $('提交按钮').click(事件处理函数);

模板引擎简介

  • 字符串大量拼接的问题

    • 性能及其低下
    • 结构上,html和js代码混合到一起了
  • 解决办法

    • 模板引擎
  • 模板引擎

    • 模板引擎,可以把 模板结构 和 数据组合到一起,形成最终的html页面

在这里插入图片描述

art-tempalte模板引擎的使用步骤

  1. 加载 template-web.js
  2. 设置模板(就是我们前面写好的HTML页面)
    • 模板要使用script标签包裹
    • 指定script标签的type=“text/html"
    • 指定script标签的id=”值“
  3. 有数据了,然后调用 template函数,完成模板和数据的组合
    • 数据可以自己模拟,真实情况,数据一般都是ajax请求返回的数据
    • template函数
      • 参数1:模板的id
      • 参数2:要展示的数据,使用JS对象形式的数据
      • 返回值:模板和数据组合好的结果
  4. 把组合好的结果,放到页面中
  5. 最后,使用 {{title}} 这样的模板语法,指定数据展示的位置。

模板语法

  • 原样输出 - 适用于 直接显示标签的样式,而不是使用实体符合

    • {{@title}}
  • 直接输出

    • {{name}}
  • 条件判断

    {{if  条件}}
    xxx
    {{else}}
    yyy
    {{/if}}
    
  • 循环

    {{each hobby val key}}{{val}}  --- 表示数组的值{{key}}  --- 表示数组的下标
    {{/each}}
    

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ajax — 评论列表

<body style"padding: 15px;"><!-- 评论面板 --><div class"panel panel-primary"><div class"panel-heading"><h3 class"panel-title">发表评论</h3></div><form class"panel-bod…

Swift傻傻分不清楚系列(七)控制流

本页包含内容&#xff1a; For-In 循环While 循环条件语句控制转移语句&#xff08;Control Transfer Statements&#xff09;提前退出检测 API 可用性 Swift提供了多种流程控制结构&#xff0c;包括可以多次执行任务的while循环&#xff0c;基于特定条件选择执行不同代码分支…

java课程之团队开发冲刺1.8

一.总结昨天进度 1.初步实现用户交互 增删课程表 二.遇到的困难 1.主界面一段程序一直报错 三.今天的任务 1.解决报错问题&#xff0c; 编写查询空教室功能 照片 燃尽图 转载于:https://www.cnblogs.com/qfsr/p/10873636.html

Ajax — 聊天机器人演示

<body><div class"wrap"><!-- 头部 Header 区域 --><div class"header"><h3>小思同学</h3><img src"img/person01.png" alt"icon" /></div><!-- 中间 聊天内容区域 --><div…

Ajax — 第三天

Ajax-03 模板引擎原理 正则回顾 区分正则方法和字符串方法 正则方法 test()exec() 字符串方法 match()replace()split()search() 正则方法由正则表达式调用&#xff1b;字符串方法由字符串调用&#xff1b; exec方法 功能&#xff1a;使用正则表达式匹配字符串&#xff0c…

d3.js 共享交换平台demo

今天在群里遇到一张图 遂来玩一玩&#xff0c;先来上图!! 点击相应按钮&#xff0c;开关线路&#xff0c;此项目的重点是计算相应图形的位置&#xff0c;由于是个性化项目就没有封装布局。好了直接上代码。 <!DOCTYPE html> <html lang"en"> <head&g…

Java知识系统回顾整理01基础05控制流程07结束外部循环

一、break是结束当前循环 二、结束当前循环实例 break; 只能结束当前循环 public class HelloWorld { public static void main(String[] args) { //打印单数 for (int i 0; i < 10; i) { for (int j 0; j < 1…

Ajax — 新闻列表

注意&#xff1a;本项目主要利用到了template&#xff0c;模板引擎进行编写 模板引擎代码下载地址 <div id"news-list"><!-- 这里放数据 --></div>.news-item {display: flex;border: 1px solid #eee;width: 700px;padding: 10px;margin-bottom: …

Ajax — 第四天

数据交换格式 XML 写法&#xff1a; 一个文档有且只有一个根标签标签必须闭合属性值必须加引号 如果说服务器返回的数据是xml格式的 前端需要把服务器返回的xml当做document对象来处理目前无法演示&#xff0c;自己写接口的时候&#xff0c;我们可以测试一下。 JSON 写法…

数据库系统原理(第三章数据库设计 )

一、数据库设计概述 数据库的生命周期 数据库设计的目标&#xff1a; 满足应用功能需求&#xff08;存、取、删、改&#xff09;&#xff0c;良好的数 据库性能&#xff08;数据的高效率存取和空间的节省 共享性、完整性、一致性、安全保密性&#xff09;数据库设计的内容 数据…

Ajax — 第五天

Ajax-05 xhr&#xff08;level-2&#xff09;新特性 responseType属性和response属性 responseType: 表示预期服务器返回的数据的类型 “” &#xff0c;默认空text&#xff0c;和空一样&#xff0c;表示服务器返回的数据是字符串格式json&#xff0c;表示服务器返回的是js…

Swift傻傻分不清楚系列(十)枚举

本页内容包含&#xff1a; 枚举语法&#xff08;Enumeration Syntax&#xff09;使用 Switch 语句匹配枚举值&#xff08;Matching Enumeration Values with a Switch Statement&#xff09;关联值&#xff08;Associated Values&#xff09;原始值&#xff08;Raw Values&…

数据库系统原理(第四章:SQL与关系数据库基本操作 )

一、SQL概述 sql是结构化查询语言&#xff08;Structured Query Language&#xff0c;SQL&#xff09;是专门用来与数 据库通信的语言&#xff0c;它可以帮助用户操作关系数据库。 SQL的特点&#xff1a; SQL不是某个特定数据库供应商专有的语言&#xff1b; SQL简单易学 &…

selenium操作浏览器窗口最大化和刷新

实际测试过程中经常遇到打开一个页面并不是全屏显示&#xff0c;但是却希望它能够全屏显示或者新增一条记录后需要刷新一下看能不能再列表中正常显示。 于是就有了今天的关于对浏览器窗口的最大化和刷新页面。需要说明的一点&#xff1a;所有和python相关的记录都是基于3.6版本…

Git安装步骤+Mac终端配置

Git安装步骤 其实可以直接略过。因为安装的时候&#xff0c;一路 next 即可。 注意&#xff0c;安装路径中不能出现中文。安装完成后&#xff0c;不得更改安装路径。 检查Git是否安装成功 在任何文件夹&#xff0c;空白处&#xff0c;右键。如果看到 “Git Bash Here”&#xf…

数据库系统原理(第5章:数据库编程)

一、存储过程 概念&#xff1a;存储过程是一组为了完成某项特定功能的SQL语句集&#xff0c; 其实质就是一段存储在数据库中的代码。 它可以由声明式的sql语句和过程式sql语句组成。 特点&#xff1a; 可增强SQL语言的功能和灵活性良好的封装性高性能可减少网络流量可作为一种安…

科学-中医:儒医

ylbtech-科学-中医&#xff1a;儒医"儒医"是一种历史悠久的社会文化现象。阐释了"儒医"的三重境界,即良医、大医、圣医。"良医"注重技,属于知识论,追求的是"真";"大医"注重德,属于道德论,追求的是"善";"圣医…

Ajax — 第六天

Ajax-06 GET和POST的区别 字面意思不同 GET 是获取意思。想从服务器获取数据&#xff0c;用GET方式的请求POST是邮递、邮寄意思。如果提交数据到服务器&#xff0c;用POST方式 请求参数位置不同 GET 请求参数会和url拼接到一起&#xff0c;形如 api/getbooks?id2&age3PO…

iOS Tips 模拟器屏幕截图

当我们发布app到AppStore的时候&#xff0c;在itunes connect里面&#xff0c;苹果官方要求我们提供各种尺寸的屏幕截图。由于受到硬件条件的限制&#xff0c;我们不可能在每个真实的物理机器上测试并截图&#xff0c;相反如果我们能直接在模拟器上进行屏幕截图的话&#xff0c…

数据库系统原理(第6章:数据库安全与保护)

一、数据库完整性 数据库完整性是指数据库中数据的正确性和相容性。 完整性约束条件的作用对象 列级约束&#xff1a; 包括对列的类型、取值范围、精度等的约束元组约束&#xff1a; 指元组中各个字段之间的相互约束表级约束&#xff1a; 指若干元组、关系之间的联系的约束定义…