91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Ajax實現獲取node服務器數據的方法

發布時間:2020-11-02 17:19:15 來源:億速云 閱讀:176 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關Ajax實現獲取node服務器數據的方法,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

1.準備

因為是要將服務器獲取的數據放在網頁中 所以說對頁面的渲染是必要的 這里我準備的是 art-template模板

2.服務器的準備

服務器要準備好渲染到頁面的數據

3.頁面的操作

這里我做的的是一個搜索框提示功能 講解都在代碼注釋中

服務器代碼如下

// 輸入框文字提示
app.get("/searchAutoPrompt", (req, res) => {
 // 搜索關鍵字
 const key = req.query.key;
 // 提示文字列表
 const list = ["百度", "百度官網", "百度游戲", "百度網盤"];
 // 搜索結果 filter是一個遍歷的函數 includes(key)是凡是字符串含有key都返回
 let result = list.filter((item) => item.includes(key));
 // 將查詢結果返回給客戶端
 res.send(result);
});

頁面代碼:

下面的代碼我用了一個封裝好的Ajax函數

代碼如下

function ajax (options) {
 // 默認值
 var defaults = {
  type: 'get',
  url: '',
  async: true,
  data: {},
  header: {
   'Content-Type': 'application/x-www-form-urlencoded'
  },
  success: function () {},
  error: function () {}
 }
 // 使用用戶傳遞的參數替換默認值參數
 Object.assign(defaults, options);
 // 創建ajax對象
 var xhr = new XMLHttpRequest();
 // 參數拼接變量
 var params = '';
 // 循環參數
 for (var attr in defaults.data) {
  // 參數拼接
  params += attr + '=' + defaults.data[attr] + '&';
  // 去掉參數中最后一個&
  params = params.substr(0, params.length-1)
 }
 // 如果請求方式為get
 if (defaults.type == 'get') {
  // 將參數拼接在url地址的后面
  defaults.url += '?' + params;
 }

 // 配置ajax請求
 xhr.open(defaults.type, defaults.url, defaults.async);
 // 如果請求方式為post
 if (defaults.type == 'post') {
  // 設置請求頭
  xhr.setRequestHeader('Content-Type', defaults.header['Content-Type']);
  // 如果想服務器端傳遞的參數類型為json
  if (defaults.header['Content-Type'] == 'application/json') {
   // 將json對象轉換為json字符串
   xhr.send(JSON.stringify(defaults.data))
  }else {
   // 發送請求
   xhr.send(params);
  }
 } else {
  xhr.send();
 }
 // 請求加載完成
 xhr.onload = function () {
  // 獲取服務器端返回數據的類型
  var contentType = xhr.getResponseHeader('content-type');
  // 獲取服務器端返回的響應數據
  var responseText = xhr.responseText;
  // 如果服務器端返回的數據是json數據類型
  if (contentType.includes('application/json')) {
   // 將json字符串轉換為json對象
   responseText = JSON.parse(responseText);
  }
  // 如果請求成功
  if (xhr.status == 200) {
   // 調用成功回調函數, 并且將服務器端返回的結果傳遞給成功回調函數
   defaults.success(responseText, xhr);
  } else {
   // 調用失敗回調函數并且將xhr對象傳遞給回調函數
   defaults.error(responseText, xhr);
  } 
 }
 // 當網絡中斷時
 xhr.onerror = function () {
  // 調用失敗回調函數并且將xhr對象傳遞給回調函數
  defaults.error(xhr);
 }
}


<script src="/js/ajax.js"></script>
<script src="/js/template-web.js"></script>
<script type="text/html" id="tpl">
 {{each result}}
  <li class="list-group-item">{{$value}}</li>
 {{/each}}
</script>
<script>
 // 獲取搜索框
 var searchInp = document.getElementById('search');
 // 獲取提示文字的存放容器
 var listBox = document.getElementById('list-box');
 //這里用定時器是為了優化 定時向服務器發送請求 優化了對服務器的壓力
 // 存儲定時器的變量
 var timer = null;
 // 當用戶在文本框中輸入的時候觸發
 searchInp.oninput = function () {
  // 清除上一次開啟的定時器
  clearTimeout(timer);
  // 獲取用戶輸入的內容
  var key = this.value;
  // 如果用戶沒有在搜索框中輸入內容
  if (key.trim().length == 0) {
   // 將提示下拉框隱藏掉
   listBox.style.display = 'none';
   // 阻止程序向下執行
   return;
  }

  // 開啟定時器 讓請求延遲發送
  timer = setTimeout(function () {
   // 向服務器端發送請求
   // 向服務器端索取和用戶輸入關鍵字相關的內容
   ajax({
    type: 'get',
    url: 'http://localhost:3000/searchAutoPrompt',
    data: {
     key: key
    },
    success: function (result) {
     // 使用模板引擎拼接字符串
     var html = template('tpl', {result: result});
     // 將拼接好的字符串顯示在頁面中
     listBox.innerHTML = html;
     // 顯示ul容器
     listBox.style.display = 'block';
    }
   })
  }, 800)
  
 }
</script>

看完上述內容,你們對Ajax實現獲取node服務器數據的方法有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邵武市| 芦溪县| 炉霍县| 美姑县| 玉门市| 沈阳市| 南充市| 宁晋县| 靖州| 岗巴县| 万载县| 故城县| 西宁市| 临沭县| 乌拉特中旗| 南木林县| 上高县| 兰溪市| 莱西市| 河北区| 晋州市| 镇平县| 铁岭市| 定远县| 闽侯县| 营山县| 扎囊县| 章丘市| 寿阳县| 古蔺县| 平阳县| 黄骅市| 岑巩县| 日土县| 莱阳市| 丰宁| 孝感市| 娱乐| 咸丰县| 河北区| 望江县|