Ajax(Asynchronous JavaScript and XML)通過異步數據交換實現頁面局部刷新。本文詳細講解原生 XMLHttpRequest 與 jQuery $.ajax 兩種實現的完整流程、參數詳解與代碼示例。
<script>
function showHint(val) {
var xhr = new XMLHttpRequest();
var url = "ajax.jsp?q=" + encodeURIComponent(val) + "&sid=" + Math.random();
xhr.open("GET", url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
document.getElementById("sun").innerHTML = xhr.responseText;
}
};
xhr.send(null);
}
</script>
<input type="text" id="tname" />
<input type="button" value="提交" onclick="showHint(document.getElementById('tname').value)" />
<span id="sun"></span>
後端 ajax.jsp
<%@ page contentType="text/html;charset=UTF-8" %>
<% out.print(request.getParameter("q")); %>
open(method, url, async):async=true 異步,需監聽 onreadystatechange;readyState=4 且 status=200 表示成功;responseText 文本響應,responseXML XML 文檔響應;<script src="jquery-1.11.1.js"></script>
<script>
function sayHi() {
$.ajax({
url: "ajax.jsp",
type: "POST",
data: $("#frm").serialize(),
async: true,
success: function(data) { $("#d").html(data); },
error: function() { alert("請求失敗!"); }
});
}
</script>
<form id="frm">
<input type="text" name="tname" />
<input type="button" value="提交" onclick="sayHi()" />
<div id="d"></div>
</form>
後端
<%@ page contentType="text/html;charset=UTF-8" %>
<% out.print(request.getParameter("tname") + "你好!"); %>
| 特性 | 原生 JS | jQuery |
|---|---|---|
| 依賴 | 無 | 需引入 jQuery |
| 代碼量 | 較多 | 鏈式調用,簡潔 |
| 錯誤處理 | 手動判斷 status | error 回調統一 |
| 序列化 | 手動拼接 | serialize() 自動 |
| 瀏覽器兼容 | 需兼容 IE 低版本 | 內部已封裝兼容 |
現代項目推薦使用 fetch API 或 axios,但理解原生機制有助於排查底層問題。