在 Web 應用程式開發中,經常需要從伺服器取得數據,然後在客戶端進行展示。 JavaScript 是現代 Web 開發中最受歡迎的語言之一,在客戶端上使用 JavaScript 請求伺服器並等待回應是一種常見操作。本文將介紹如何使用 JavaScript 發送 HTTP 請求,並等待伺服器回應。
JavaScript 中使用 XMLHttpRequest 物件來傳送 HTTP 請求。 XMLHttpRequest 物件是現代 Web 應用程式中最常用的非同步資料交換技術。它允許我們從 JavaScript 中建立非同步請求並與伺服器進行互動。以下是一個簡單的範例:
const xhr = new XMLHttpRequest(); xhr.open('GET', 'http://localhost:8080/data'); xhr.send();
上面的程式碼使用 GET 方法從 http://localhost:8080/data 端點請求資料。當呼叫 send() 方法時,請求將被傳送到伺服器。該方法是異步的,因此不會阻止後續程式碼的執行。
在發送請求後,我們需要等待伺服器回應。我們可以使用監聽器來處理回應。以下是一個簡單的範例:
const xhr = new XMLHttpRequest(); xhr.onload = function() { if (xhr.status === 200) { console.log(xhr.responseText); } else { console.error('Error occurred'); } }; xhr.open('GET', 'http://localhost:8080/data'); xhr.send();
上面的程式碼將請求傳送到伺服器,並在伺服器回應時處理該回應。 load 事件監聽器在應用程式接收到回應時觸發。如果響應狀態為 200,則將回應輸出到控制台。否則,將輸出錯誤訊息。
以上範例使用回呼函數來處理伺服器回應。但是,回調函數可能會導致巢狀和混亂的程式碼,因此我們可以使用 Promise 來處理非同步請求。以下是使用 Promise 處理非同步請求的範例:
function makeRequest(method, url) { return new Promise(function(resolve, reject) { const xhr = new XMLHttpRequest(); xhr.open(method, url); xhr.onload = function() { if (xhr.status === 200) { resolve(xhr.response); } else { reject(xhr.statusText); } }; xhr.onerror = function() { reject(xhr.statusText); }; xhr.send(); }); }
以上程式碼中,makeRequest 函數接受 HTTP 方法和 URL 作為參數,並傳回一個 Promise 物件。該物件具有兩個處理器函數:resolve 和 reject。當伺服器回應成功時,resolve 處理器函數將回應輸出到控制台。而出現錯誤時,reject 處理器函數將輸出錯誤訊息。
以下是如何使用函數:
makeRequest('GET', 'http://localhost:8080/data') .then(function(response) { console.log(response); }) .catch(function(error) { console.error(error); });
上面的程式碼將發出 HTTP GET 請求,並在處理成功或失敗時呼叫處理器函數。使用 Promise 風格編寫非同步程式碼比使用回調函數更容易理解和維護。
結論
使用 JavaScript 發送 HTTP 請求和等待伺服器回應是 Web 應用程式中的必備技能。 JavaScript 提供了 XMLHttpRequest 物件來處理這種操作,並沒有限制開發人員使用第三方函式庫來簡化程式碼。本文介紹了使用原生 JavaScript 發送 HTTP 請求和等待伺服器回應的範例,並展示如何使用 Promise 風格編寫非同步程式碼。
以上是javascript請求伺服器並等待回應的詳細內容。更多資訊請關注PHP中文網其他相關文章!