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.pswp.cn/news/248074.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248074.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248074.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PC辦公必備軟件

Everything &#xff1a;基于名稱快速定位文件和文件夾https://www.voidtools.com/zh-cn/ Notepad &#xff1a; a free (as in "free speech" and also as in "free beer") source code editor and Notepad replacement that supports several languagesh…

Swift傻傻分不清楚系列(六)集合類型

本頁包含內容&#xff1a; 集合的可變性&#xff08;Mutability of Collections&#xff09;數組&#xff08;Arrays&#xff09;集合&#xff08;Sets&#xff09;字典&#xff08;Dictionaries&#xff09; Swift 語言提供Arrays、Sets和Dictionaries三種基本的集合類型用來…

在.NET Core中使用DispatchProxy“實現”非公開的接口

原文地址&#xff1a;“Implementing” a non-public interface in .NET Core with DispatchProxy 原文作者&#xff1a;Filip W. 譯文地址&#xff1a;https://www.cnblogs.com/lwqlun/p/11575686.html 譯者&#xff1a;Lamond Lu 簡介 反射是.NET中一個非常強大的概念&#x…

Ajax — 評論列表

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

VS2013秘鑰

Visual Studio Ultimate 2013 KEY&#xff08;密鑰&#xff09;&#xff1a;BWG7X-J98B3-W34RT-33B3R-JVYW9Visual Studio Premium 2013 KEY&#xff08;密鑰&#xff09;&#xff1a;FBJVC-3CMTX-D8DVP-RTQCT-92494Visual Studio Professional 2013 KEY&#xff08;密鑰&…

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…

uni-app開發微信小程序的幾天時間

人只有在不斷的學習&#xff0c;才能不斷的給自己充電&#xff0c;如果我們停止了學習&#xff0c;就像人沒有了血脈&#xff0c;就會死亡&#xff0c;近來學習比較忙&#xff0c;壓力比較大&#xff0c;整天面對著電腦&#xff0c;敲擊代碼&#xff0c;從中雖然收獲了快樂&…

Swift傻傻分不清楚系列(八)函數

本頁包含內容&#xff1a; 函數定義與調用&#xff08;Defining and Calling Functions&#xff09;函數參數與返回值&#xff08;Function Parameters and Return Values&#xff09;函數參數名稱&#xff08;Function Parameter Names&#xff09;函數類型&#xff08;Funct…

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…

Swift傻傻分不清楚系列(九)閉包

本頁包含內容&#xff1a; 閉包表達式&#xff08;Closure Expressions&#xff09;尾隨閉包&#xff08;Trailing Closures&#xff09;值捕獲&#xff08;Capturing Values&#xff09;閉包是引用類型&#xff08;Closures Are Reference Types&#xff09;非逃逸閉包(Nones…

Ajax — 新聞列表

注意&#xff1a;本項目主要利用到了template&#xff0c;模板引擎進行編寫 模板引擎代碼下載地址 <div id"news-list"><!-- 這里放數據 --></div>.news-item {display: flex;border: 1px solid #eee;width: 700px;padding: 10px;margin-bottom: …

vim下更省心地用中文

在vim下使用中文是個麻煩。除了寫代碼&#xff0c;很多時候也需要做筆記。以下介紹rime輸入法的一個功能&#xff0c;它可以減少vim下中文輸入帶來的麻煩。在***.custom.yaml下添加代碼&#xff1a; "key_binder/bindings": - { when: always, accept: ReleaseEs…

Python 常見的內置模塊

1. abs() 函數 描述 abs() 函數返回數字的絕對值 #!/usr/bin/pythonprint "abs(-45) : ", abs(-45) print "abs(100.12) : ", abs(100.12) print "abs(119L) : ", abs(119L)以上實例運行后輸出結果為&#xff1a;abs(-45) : 45 abs(100.12) : …

Ajax — 第四天

數據交換格式 XML 寫法&#xff1a; 一個文檔有且只有一個根標簽標簽必須閉合屬性值必須加引號 如果說服務器返回的數據是xml格式的 前端需要把服務器返回的xml當做document對象來處理目前無法演示&#xff0c;自己寫接口的時候&#xff0c;我們可以測試一下。 JSON 寫法…

檢測字符串包含emoji表情

有時候在開發時會遇到不希望字符串中包含emoji表情的情況&#xff0c;Google之后發現了方法&#xff0c;但是似乎iOS9之后的emoji無法過濾&#xff0c;繼續尋找方法&#xff0c;在一個NSString的擴展中發現了辦法 #import <Foundation/Foundation.h>/**Category to searc…

數據庫系統原理(第三章數據庫設計 )

一、數據庫設計概述 數據庫的生命周期 數據庫設計的目標&#xff1a; 滿足應用功能需求&#xff08;存、取、刪、改&#xff09;&#xff0c;良好的數 據庫性能&#xff08;數據的高效率存取和空間的節省 共享性、完整性、一致性、安全保密性&#xff09;數據庫設計的內容 數據…