隨著 Web 技術的發展,用戶對于網站使用的要求越來越高。在過去,用戶每進行一次操作都需要刷新整個頁面,以獲取新的數據。這個過程十分耗時,也十分影響用戶體驗。基于這種需要,Ajax 呈現了出來,它可以無需刷新頁面,實時地更新數據,使網站變得更加快速高效。
Ajax 即 Asynchronous Javascript and XML 的縮寫。它利用了以下技術:XMLHttpRequest 對象、DOM 文檔渲染和 JavaScript。Ajax 不僅可以傳輸 XML 格式的數據,也支持 JSON,并可以與 PHP 腳本配合使用,后者可以向服務器請求數據,進行與數據庫的交互。
Ajax 請求可以通過 GET 或 POST 方式發送。下面是一個簡單的使用 Ajax 發送 GET 請求的例子:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'example.php?name=Jack');
xhr.send();
此代碼會發送一個名為 name,值為 Jack 的 GET 請求到 example.php。example.php 這個文件接收到請求后,可以返回一個數據,例如下面的例子,返回一個名為 message,值為 Hello, Jack 的 JSON 數據:
$name = $_GET['name'];
$message = array('message' =>'Hello, ' . $name);
echo json_encode($message);
當 example.php 返回 JSON 數據后,我們要做的就是在 JavaScript 中解析這個數據。下面是一個解析前面示例返回的數據的例子:
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
console.log(response.message);
}
}
console.log(response.message)的輸出結果是:
'Hello, Jack'
盡管 GET 請求足夠簡單,但是有時需要發送一些敏感數據,GET 請求并不安全。POST 請求更適合用于多種情況。下面是一個簡單的使用 Ajax 發送 POST 請求的例子:
var xhr = new XMLHttpRequest();
xhr.open('POST', 'example.php');
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send('name=Jack');
此代碼會發送一個名為 name,值為 Jack 的 POST 請求到 example.php。與 GET 請求一樣,example.php 可以返回一個 JSON 數據,例如下面的例子,同樣返回一個名為 message,值為 Hello, Jack 的 JSON 數據:
$name = $_POST['name'];
$message = array('message' =>'Hello, ' . $name);
echo json_encode($message);
與 GET 請求相同,解析返回的 JSON 數據的 JavaScript 代碼也非常簡單,如下所示:
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
console.log(response.message);
}
}
POST 請求可以發送大量的數據,并且相對比較安全。當然,Ajax 還有更多的用法,且可以與 PHP 搭配使用,滿足多種復雜應用的需求。總之,Ajax 已經成為了現代前端開發不可或缺的技術之一。