iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 25
0
自我挑戰組

JavaScript學習日誌系列 第 25

學習日誌25-AJAX 2

  • 分享至 

  • xImage
  •  

HTTP狀態碼

HTTP 狀態碼指的是從伺服器端回應(HTTP Response)的狀態,對於狀態的分類可區分三個層級,分別用三個數字表示,第一個數字為大類、第二個數字為中類、第三個數字為小類。
引用 保哥blog 網頁開發人員應了解的 HTTP 狀態碼
HTTP 狀態碼大致分成 5 類 :

  • 1xx - 參考資訊 (Informational)
  • 2xx - 成功 (OK) ex. 200 - 確定。 用戶端要求成功。
  • 3xx - 重新導向 (Redirection)
  • 4xx - 用戶端錯誤 (Client Error) ex. 404 - 找不到。
  • 5xx - 伺服器錯誤 (Server Error)

跨來源資源共用概念

跨來源資源共用(Cross-Origin Resource Sharing (CORS))是一種使用額外 HTTP 標頭令目前瀏覽網站的使用者代理取得存取其他來源(網域)伺服器特定資源權限的機制。

因為安全性的考量,瀏覽器預設都會限制網頁做跨網域的連線。但如果要提供資料存取的服務給其它人使用,就必須要開放對應的API給其它人連線。
查詢是否可以 CORS test-cors.org

AJAX POST 寫法

一般註冊帳號輸入練習 :

  1. 建構傳統表單輸入html
<form action="index.html">
    帳號:<input type="text" name="account"> <br>
    密碼:<input type="password" name="password"> <br>
    <input type="submit" value="送出">
</form>
  1. 宣告 xhr ,產生 XMLHttpRequest
  2. open 裡面參數 ('post格式','要讀取的網址','非同步')
  3. 新增.setRequestHeader('要傳送什麼東西的格式Content-type','模擬一般傳統表單輸入的格式application/x-www-form-urlencoded')
  4. .send參數,這邊在JS產生參數送過去
var xhr = new XMLHttpRequest();
xhr.open('post','https://hexschool-tutorial.herokuapp.com/api/signup',true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send('email=taiwan1081010@gmail.com&password=1081010');

https://ithelp.ithome.com.tw/upload/images/20191010/20121004kso5ikemCV.png

chromeconsole 打上 xhr 檢查成功
readyState: 4
response: "{"success":true,"result":{},"message":"帳號註冊成功"}"
responseText: "{"success":true,"result":{},"message":"帳號註冊成功"}"
status: 200

AJAX JSON 傳遞

xhr.setRequestHeader 的傳遞格式上一個練習的是一般表單輸入的格式,也有 json 格式傳遞方式

  1. 新增 account 物件,帶入email及password值
  2. 宣告 xhr ,產生 XMLHttpRequest
  3. open 裡面參數 ('post格式','要讀取的網址','非同步')
  4. 新增.setRequestHeader('要傳送什麼東西的格式Content-type','json傳遞格式application/json')
  5. 宣告 data,把要傳遞 accountJSON.stringify 給字串化
  6. .send data 過去
var account = {
	email: 'taiwan1081010@hotmail.com',
	password: '1081010'
}
var xhr = new XMLHttpRequest();
xhr.open('post','https://hexschool-tutorial.herokuapp.com/api/signup',true);
xhr.setRequestHeader('Content-type','application/json');
var data = JSON.stringify(account);
xhr.send(data);

從chrome開發人員工具檢視 AJAX POST

get 流程 :

https://ithelp.ithome.com.tw/upload/images/20191010/201210046Ro4jKcEuh.jpg

post 流程 :

Content-type - application/x-www-form-urlencoded 一般表單傳送格式

& 用來區隔參數,有幾個參數中間就用幾個 & 的去隔開

https://ithelp.ithome.com.tw/upload/images/20191010/20121004vMOwBBBGQQ.jpg

Content-type - application/json json傳送格式
https://ithelp.ithome.com.tw/upload/images/20191010/20121004i8DRYbVk3a.jpg


上一篇
學習日誌24-AJAX 1
下一篇
學習日誌26-AJAX 實務練習
系列文
JavaScript學習日誌30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言