首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Ajax 兩種實現方式:原生 JS 與 jQuery 完整對比

     編輯:Java 綜合教學

Ajax 兩種實現方式:原生 JS 與 jQuery 完整對比

Ajax(Asynchronous JavaScript and XML)通過異步數據交換實現頁面局部刷新。本文詳細講解原生 XMLHttpRequest 與 jQuery $.ajax 兩種實現的完整流程、參數詳解與代碼示例。

核心流程

  1. 創建請求對象;
  2. 配置請求方法、URL、異步標誌;
  3. 發送請求;
  4. 監聽響應狀態,處理返回數據;
  5. 更新頁面 DOM。

方式一:原生 XMLHttpRequest

<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 文檔響應;
  • GET 簡單快速,POST 適合大數據、非幂等操作。

方式二:jQuery $.ajax

<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") + "你好!"); %>

對比總結

特性原生 JSjQuery
依賴無需引入 jQuery
代碼量較多鏈式調用,簡潔
錯誤處理手動判斷 statuserror 回調統一
序列化手動拼接serialize() 自動
瀏覽器兼容需兼容 IE 低版本內部已封裝兼容

現代項目推薦使用 fetch API 或 axios,但理解原生機制有助於排查底層問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved