当前位置:   article > 正文

Ajax3_resetui()

resetui()

目录

机器人案例

1. 演示案例要完成的效果

 2. 梳理案例的代码结构

3.将用户输入的内容渲染到聊天窗口

4. 发起请求获取聊天消息

5. 将机器人的聊天内容转为语音

6. 通过 播放语音

7.其他代码

form表单与模板引擎

1.form表单的基本使用

1.1 什么是表单

1.2 表单的组成部分

1.3<form>标签的属性

1.4 表单的同步提交及缺点

2.通过Ajax提交表单数据

 2.1 监听表单提交事件

2.2 阻止表单默认提交行为

2.3 快速获取表单中的数据


机器人案例

1. 演示案例要完成的效果

 2. 梳理案例的代码结构

  1. 梳理页面的UI布局
  2. 将业务代码抽离到chat.js 中
  3. 了解resetui(函数的作用

3.将用户输入的内容渲染到聊天窗口

  1. // 为发送按钮绑定点击事件处理函数
  2. $('#btnSend').on('click'function () {
  3.     var text = $('#ipt').val().trim() // 获取用户输入的内容
  4.     if (text.length <= 0) { // 判断用户输入的内容是否为空
  5.        return $('#ipt').val('')
  6.     }
  7.     // 将用户输入的内容显示到聊天窗口中
  8.     $('#talk_list').append('<li class="right_word"><img src="img/person02.png" /> <span>' + text + '</span></li>')
  9.     resetui() // 重置滚动条的位置
  10.     $(‘#ipt’).val('') // 清空输入框的内容
  11. // TODO: 发起请求,获取聊天消息
  12. })

4. 发起请求获取聊天消息

  1. function getMsg(text) {
  2.     $.ajax({
  3.       method'GET',
  4.       url'http://ajax.frontend.itheima.net:3006/api/robot',
  5.       data: {
  6.         spoken: text
  7.       },
  8.       successfunction (res) {
  9.         if (res.message === 'success') {
  10.            var msg = res.data.info.text
  11.            $('#talk_list').append('<li class="left_word"><img src="img/person01.png" /> <span>' + msg + '</span></li>')
  12.            resetui()
  13.            // TODO: 发起请求,将机器人的聊天消息转为语音格式
  14.         }
  15.       }
  16.     })
  17. }

5. 将机器人的聊天内容转为语音

  1.   function getVoice(text) {
  2.     $.ajax({
  3.       method'GET',
  4.       url'http://ajax.frontend.itheima.net:3006/api/synthesize',
  5.       data: {
  6.         text: text
  7.       },
  8.       successfunction (res) {
  9. // 如果请求成功,则 res.voiceUrl 是服务器返回的音频 URL 地址
  10.         if (res.status === 200) {
  11.            $('#voice').attr('src', res.voiceUrl)
  12.         }
  13.       }
  14.     })
  15.   }

6. 通过 <audio> 播放语音

  1. <!-- 音频播放语音内容 -->
  2. <audio src="" id="voice" autoplay style="display: none;"></audio>

7.其他代码

  1. <body>
  2. <div class="wrap">
  3. <!-- 头部 Header 区域 -->
  4. <div class="header">
  5. <h3>小思同学</h3>
  6. <img src="img/person01.png" alt="icon" />
  7. </div>
  8. <!-- 中间 聊天内容区域 -->
  9. <div class="main">
  10. <ul class="talk_list" style="top: 0px;" id="talk_list">
  11. <li class="left_word">
  12. <img src="img/person01.png" /> <span>嗨,最近想我没有?</span>
  13. </li>
  14. <!-- <li class="right_word">
  15. <img src="img/person02.png" /> <span>你好哦</span>
  16. </li> -->
  17. </ul>
  18. <div class="drag_bar" style="display: none;">
  19. <div class="drager ui-draggable ui-draggable-handle" style="display: none; height: 412.628px;"></div>
  20. </div>
  21. </div>
  22. <!-- 底部 消息编辑区域 -->
  23. <div class="footer">
  24. <img src="img/person02.png" alt="icon" />
  25. <input type="text" placeholder="说的什么吧..." class="input_txt" id="ipt" />
  26. <input type="button" value="发 送" class="input_sub" id="btnSend" />
  27. </div>
  28. </div>
  29. <!-- 注意:只要为 audio 指定了新的 src 属性,而且指定了 autoplay,那么,语音就会自动播放 -->
  30. <audio src="" id="voice" autoplay style="display: none;"></audio>
  31. <script type="text/javascript" src="js/scroll.js"></script>
  32. <script src="./js/chat.js"></script>
  33. </body>

form表单与模板引擎

1.form表单的基本使用

1.1 什么是表单

表单在网页中主要负责数据采集功能。HTML中的<form>标签,就是用于采集用户输入的信息,并通过<form>标签的提交操作,把采集到的信息提交到服务器端进行处理。

  1. <form>
  2. <input type="text" name="email_or_mobile" />
  3. <input type="password" name="password" />
  4. <input type="checkbox" name="remember_me" checked />
  5. <button type="submit">提交</button>
  6. </form>

1.2 表单的组成部分

表单由三个基本部分组成:

  • 表单标签
  • 表单域
  • 表单按钮
  1. <form>
  2. <input type="text" name="email_or_mobile" />
  3. <input type="password" name="password" />
  4. <input type="checkbox" name="remember_me" checked />
  5. <button type="submit">提交</button>
  6. </form>

1.3 <form>标签的属性

<form>标签用来采集数据,<form>标签的属性则是用来规定如何把采集到的数据发送到服务器

属性

描述

action

URL地址

规定当提交表单时,向何处发送表单数据

method

get或post

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

enctype

application/x-www-form-urlencoded

multipart/form-data

text/plain

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

target

_blank

_self

_parent

_top

framename

规定在何处打开 action URL

1. action

  1. action 属性用来规定当提交表单时,向何处发送表单数据。
  2. action 属性的值应该是后端提供的一个 URL 地址,这个 URL 地址专门负责接收表单提交过来的数据。
  3. 当 <form> 表单在未指定 action 属性值的情况下,action 的默认值为当前页面的 URL 地址。

注意:当提交表单后,页面会立即跳转到 action 属性指定的 URL 地址

2. target

  1. target 属性用来规定在何处打开 action URL
  2. 它的可选值有5个,默认情况下,target 的值是 _self,表示在相同的框架中打开 action URL。

描述

_blank

在新窗口中打开。

_self

默认。在相同的框架中打开。

_parent

在父框架集中打开。(很少用)

_top

在整个窗口中打开。(很少用)

framename

在指定的框架中打开。(很少用)

3. method

  1. method 属性用来规定以何种方式把表单数据提交到 action URL。
  2. 它的可选值有两个,分别是 get 和 post。
  3. 默认情况下,method 的值为 get,表示通过URL地址的形式,把表单数据提交到 action URL。

注意:

  1. get 方式适合用来提交少量的、简单的数据。
  2. post 方式适合用来提交大量的、复杂的、或包含文件上传的数据。
  3. 在实际开发中,<form> 表单的 post 提交方式用的最多,很少用 get。例如登录、注册、添加数据等表单操作,都需要使用 post 方式来提交表单。

4. enctype

enctype 属性用来规定在发送表单数据之前如何对数据进行编码。 它的可选值有三个,默认情况下,enctype 的值为 application/x-www-form-urlencoded,表示在发送前编码所有的字符。

描述

application/x-www-form-urlencoded

在发送前编码所有字符(默认)

multipart/form-data

不对字符编码。

在使用包含文件上传控件的表单时,必须使用该值。

text/plain

空格转换为 “+” 加号,但不对特殊字符编码。(很少用)

注意:

  1. 在涉及到文件上传的操作时,必须将 enctype 的值设置为 multipart/form-data
  2. 如果表单的提交不涉及到文件上传操作,则直接将 enctype 的值设置为 application/x-www-form-urlencoded 即可!

1.4 表单的同步提交及缺点

1. 什么是表单的同步提交

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

2. 表单同步提交的缺点

  1. <form>表单同步提交后,整个页面会发生跳转,跳转到 action URL 所指向的地址,用户体验很差。
  2. <form>表单同步提交后,页面之前的状态和数据会丢失。

3. 如何解决表单同步提交的缺点 

如果使用表单提交数据,则会导致以下两个问题:  

  • 页面会发生跳转  
  • 页面之前的状态和数据会丢失

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

2.通过Ajax提交表单数据

 2.1 监听表单提交事件

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

  1. $('#form1').submit(function(e) {
  2. alert('监听到了表单的提交事件')
  3. })
  4. $('#form1').on('submit', function(e) {
  5. alert('监听到了表单的提交事件')
  6. })

2.2 阻止表单默认提交行为

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

  1. $('#form1').submit(function(e) {
  2. // 阻止表单的提交和页面的跳转
  3. e.preventDefault()
  4. })
  5. $('#form1').on('submit', function(e) {
  6. // 阻止表单的提交和页面的跳转
  7. e.preventDefault()
  8. })

2.3 快速获取表单中的数据

1. serialize()函数

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

$(selector).serialize ()

serialize()函数的好处:可以一次性获取到表单中的所有的数据。
2. serialize()函数示例

  1. <form id="form1">
  2. <input type="text" name="username" />
  3. <input type="password" name="password" />
  4. <button type="submit">提交</button>
  5. </form>
  1. $('#form1').serialize()
  2. // 调用的结果:
  3. // username=用户名的值&password=密码的值

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/100694
推荐阅读
相关标签
  

闽ICP备14008679号