Ajax(Asynchronous JavaScript and XML)是一種通過在后臺與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,實現(xiàn)頁面動態(tài)更新的技術(shù)。它可以實現(xiàn)無刷新更新頁面內(nèi)容,提升用戶體驗。在實際應(yīng)用中,我們常常需要使用Ajax來實現(xiàn)兩個html頁面之間的數(shù)值傳遞。
一種常見的情況是,在頁面A中提交表單數(shù)據(jù)給服務(wù)器后,將服務(wù)器返回的數(shù)據(jù)顯示在頁面B中。假設(shè)我們有一個頁面A,其中包含了一個輸入框和一個提交按鈕,用戶在輸入框中輸入名稱并點擊提交按鈕后,會將數(shù)據(jù)發(fā)送給服務(wù)器。服務(wù)器根據(jù)用戶輸入的名稱,返回對應(yīng)的信息給頁面B,然后將這些信息顯示在頁面B中。
<!-- 頁面A --> <input type="text" id="name" placeholder="請輸入名稱"> <input type="button" value="提交" onclick="sendData()"> <script> function sendData() { var name = document.getElementById("name").value; var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { var response = xhr.responseText; // 將服務(wù)器返回的數(shù)據(jù)顯示在頁面B中 window.open("pageB.html?" + response); } } xhr.open("GET", "server.php?name=" + name, true); xhr.send(); } </script>
以上代碼是頁面A的示例,其中定義了一個名為"sendData"的函數(shù),用于處理用戶的提交操作。在函數(shù)內(nèi)部,我們首先獲取了用戶在輸入框中輸入的名稱,并創(chuàng)建了一個XMLHttpRequest對象。然后,我們?yōu)樵搶ο蟮?onreadystatechange"事件綁定了一個回調(diào)函數(shù),用于處理服務(wù)器返回的數(shù)據(jù)。接著,我們使用"open"方法指定數(shù)據(jù)的請求方式和URL,并使用"send"方法發(fā)送請求。當(dāng)服務(wù)器返回數(shù)據(jù)時,回調(diào)函數(shù)會被觸發(fā),我們可以通過"xhr"對象的"responseText"屬性獲取服務(wù)器返回的數(shù)據(jù),并將數(shù)據(jù)作為參數(shù)傳遞給頁面B。
<!-- 頁面B --> <script> var url = window.location.href; var data = url.split("?")[1]; document.write("頁面B收到的數(shù)據(jù)為:" + data); </script>
以上代碼是頁面B的示例,其中我們首先獲取了頁面的URL,并通過split函數(shù)分割URL字符串,取得了頁面A傳遞過來的數(shù)據(jù)。然后,我們使用document.write方法將傳遞過來的數(shù)據(jù)顯示在頁面B中。
通過以上示例,我們可以得出結(jié)論:通過使用Ajax,我們可以在兩個html頁面之間實現(xiàn)數(shù)據(jù)的傳遞。在頁面A中,我們使用XMLHttpRequest對象發(fā)送數(shù)據(jù)給服務(wù)器,并在回調(diào)函數(shù)中將服務(wù)器返回的數(shù)據(jù)傳遞到頁面B。在頁面B中,我們可以通過window.location.href獲取頁面URL,并將其中的參數(shù)提取出來進(jìn)行處理。