1. 程式人生 > 其它 >Ajax第二課學習(小案例實踐)

Ajax第二課學習(小案例實踐)

技術標籤:Ajax

需求:get請求點選按鈕發請求,講請求回來的資料呈現到div中

例如:
一開始沒資料:
在這裡插入圖片描述
點選按鈕之後:
在這裡插入圖片描述
頁面程式碼如下:

 <title>Ajax get請求</title>
  <style>
    #result {
      width: 200px;
      height: 100px;
      border: 1px solid green;
    }
  </style>
</head>

<body>
  <!-- 需求:點選按鈕,傳送請求,將請求回來的資料呈現在div裡 --
> <div id="result"></div><br> <button id="btn">點擊發送請求</button> <script> //獲取元素 const btn = document.getElementById('btn') const result = document.getElementById('result') btn.onclick = () => { //建立物件 const xhr =
new XMLHttpRequest() //初始化 設定方法和url xhr.open('GET', 'http://127.0.0.1:8000/getServer?id =007&name=a')//get傳送請求並傳參 xhr.send() //事件繫結,處理服務端返回的結果 //onreadystatechange解讀:on是當····什麼時候,表示一個時間上的待定, //readystate是 xhr 物件中的屬性,它有5個值表示狀態:0(未初始化,一開始的值就是0) ,1(表示open方法呼叫完畢),2(表示send方法呼叫完畢),3(表示服務端返回部分結果),4(表示服務端返回全部結果)
//change是改變 xhr.onreadystatechange = () => { //判斷伺服器是不是返回全部結果,如果是就繼續執行 // if (xhr.readyState === 4) { //還要判斷響應狀態碼:200 404 403 401 500 //以2開頭的就是成功的 if (xhr.readyState === 4 && xhr.status >= 200 && xhr.status < 300) { //處理結果 行(協議版本 狀態碼 狀態字串) 頭 空行 體 //xhr.status 儲存的是響應狀態碼 //xhr.statusText 儲存的是響應狀態字串 //xhr.getAllResponseHeader 儲存的是所有響應頭 //xhr.response 儲存的是響應體 console.log('響應狀態碼', xhr.status); console.log('狀態字串態碼', xhr.statusText); console.log('響應頭', xhr.getAllResponseHeader); console.log('響應體', xhr.response); result.innerHTML = xhr.response // } } } } </script> </body>

服務端程式碼如下:

//1.引入express
const { request, response } = require('express')
const express = require('express')
//2.建立應用物件
const app = express()
//建立路由規則
// request是對請求報文的封裝
// response是對響應報文的封裝
app.get('/getServer', (request, response) => {
  //設定響應頭  響應體名字Access-Control-All-Origin , *號是設定允許跨域
  response.setHeader('Access-Control-Allow-Origin', '*')
  //設定響應體
  response.send('Hello AJAX')
})
//監聽埠啟動服務
app.listen(8000, () => {
  console.log('服務已經啟動,8000 埠監聽中');
})

2.post請求,需求:把滑鼠移動到div,div裡面顯示請求回來的內容,移開就不顯示

思路其實跟get請求差不多,只是把伺服器的get換乘post或者all,all是兩種相容
頁面程式碼:

<body>
  <!-- 當滑鼠移動到div時。顯示請求回來的內容 -->
  <div id="result"></div>
  <script>
    const result = document.getElementById('result')
    result.onmouseover = () => {
      const xhr = new XMLHttpRequest() //建立例項
      xhr.open('post', 'http://127.0.0.1:8000/postServer')//傳送請求
      xhr.send("id=007&name=a") //post傳參
      xhr.onreadystatechange = () => {//與伺服器進行資料互動
        if (xhr.readyState === 4 && xhr.status >= 200 && xhr.status < 300) {
          result.innerHTML = xhr.response
        }
      }
    }
    result.onmouseout = () => {
      result.innerHTML = ''
    }
  </script>
</body>

服務端程式碼:

//1.引入express
const { request, response } = require('express')
const express = require('express')
//2.建立應用物件
const app = express()
//建立路由規則
// request是對請求報文的封裝
// response是對響應報文的封裝
app.all('/postServer', (request, response) => {
  //設定響應頭
  response.setHeader('Access-Control-Allow-Origin', '*')
  response.send('Hello 我是post請求')
})
//監聽埠啟動服務
app.listen(8000, () => {
  console.log('服務已經啟動,8000 埠監聽中');
})

效果圖:
一開始:
在這裡插入圖片描述
滑鼠移動到div:
在這裡插入圖片描述
移走之後就又消失了