iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
JavaScript

學習網頁的眉眉角角系列 第 16

Day 16 :AJAX 與非同步操作

  • 分享至 

  • xImage
  •  

什麼是 AJAX?

AJAX (Asynchronous JavaScript and XML) 是一種使用 JavaScript 來進行非同步網絡請求的技術。它允許網頁從伺服器獲取資料而無需重新加載整個頁面。這樣可以讓使用者體驗到更加流暢的互動,並減少頁面加載時間。

雖然名稱裡有 XML,但現代開發更多是用 JSON 來作為資料格式。

基本 AJAX 概念
AJAX 的工作流程是透過 JavaScript 發送 HTTP 請求到伺服器,並在收到回應後進行處理,通常會動態更新頁面的一部分內容。

使用 Fetch API
fetch() 是現代瀏覽器提供的 API,用於發送非同步請求。以下是基本的 fetch() 用法:

fetch('https://jsonplaceholder.typicode.com/posts')
  .then(response => response.json())  // 將回應轉換為 JSON
  .then(data => console.log(data))    // 在控制台印出資料
  .catch(error => console.error('Error:', error));

範例:AJAX 動態載入內容
這是一個簡單的範例,當用戶點擊按鈕時,通過 AJAX 從伺服器獲取資料並動態顯示在頁面上。

<!DOCTYPE html>
<html lang="zh-TW">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AJAX 範例</title>
</head>
<body>
    <button id="loadData">載入資料</button>
    <div id="content"></div>

    <script>
        const button = document.getElementById('loadData');
        const contentDiv = document.getElementById('content');

        button.addEventListener('click', function() {
            fetch('https://jsonplaceholder.typicode.com/posts/1')
                .then(response => response.json())
                .then(data => {
                    contentDiv.innerHTML = `
                        <h2>${data.title}</h2>
                        <p>${data.body}</p>
                    `;
                })
                .catch(error => console.error('Error:', error));
        });
    </script>
</body>
</html>

在這個範例中,按下按鈕後,頁面會向 API 請求一篇文章,並將回應的資料動態顯示在頁面上。

非同步操作與 Promise
在 JavaScript 中,非同步操作通常會使用 Promise 來處理。Promise 代表一個尚未完成但最終會返回結果(成功或失敗)的操作。

你可以用 then() 方法來鏈接一連串的操作,或使用 async/await 語法讓程式碼看起來更加直觀。
範例:async/await

async function loadData() {
    try {
        const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');
        const data = await response.json();
        console.log(data);
    } catch (error) {
        console.error('Error:', error);
    }
}

loadData();

使用 *async/await *可以讓非同步操作寫起來像同步操作一樣,這樣的程式碼更加易讀。

總結

在第十六天,更熟悉了 AJAX 與 非同步操作。通過這些技術,網頁可以實現更加靈活的動態內容加載,提升用戶體驗。明天,會繼續深入探討 AJAX 在實際專案中的應用,並且學習如何處理更加複雜的非同步邏輯。


上一篇
Day 15:JavaScript 的模組化開發
下一篇
Day 17:瀏覽器的 Web Storage API
系列文
學習網頁的眉眉角角17
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言