這次帶給大家詳細解析JS中Ajax的使用技巧,詳細解析JS中使用Ajax的注意事項有哪些,以下就是實戰案例,一起來看一下。
Ajax不是一種新的程式語言,而是使用現有標準的新方法。 AJAX可以在不重新載入整個頁面的情況下,與伺服器交換資料。這種非同步互動的方式,使用戶點擊後,不必刷新頁面也能取得新資料。
XMLHttpRequest物件
#Ajax的核心是XMLHttpRequest物件(XHR)。 XHR為向伺服器發送請求和解析伺服器回應提供了介面。能夠以非同步方式從伺服器取得新資料。
在瀏覽器中建立物件(只支援IE7及更高的版本):
var xhr = new XMLHttpRequest();
XHR的用法
首先要介紹的是open()方法。它接收3個參數:
•要發送的請求的類型(POST、GET等)
#•請求的URL
•表示是否非同步發送請求的布林值
呼叫open()範例:
xhr.open("get", "index.jsp", false);
針對index.jsp的GET請求。 URL相對於執行程式碼的目前頁面;呼叫open()方法並不會真正發送請求,只是啟動一個請求以備發送。
呼叫send()傳送請求:
xhr.send(null);
send()接收一個參數,也就是要作為請求主體發送的數據。如果不需要透過請求主體發送數據,則必須傳入null。
對應資料會填入XHR物件的相關屬性:
•responseText:作為回應主體被傳回的文字
•responseXML:作為回應的內容類型是「text /xml」或「application/xml」
•status:回應的HTTP狀態
•statusText:HTTP狀態的說明
在接收回應後,先檢查status屬性,確定響應已經返回,一般200作為成功的標誌。狀態碼304表示資源沒有修改,可以直接使用瀏覽器中快取的版本。
為了接收到適當的回應,應該以以下方式偵測兩個狀態碼:
xhr.open("get", "index.jsp", false); xhr.send(null); if ((xhr.status >= 200 && xhr.status <p style="text-align: left;">透過偵測readyState屬性,可以確定請求/回應過程的目前活動階段。 </p><p style="text-align: left;">•0:未初始化。未呼叫open()方法</p><p style="text-align: left;">•1:啟動。已經呼叫open()方法,未呼叫send()方法</p><p style="text-align: left;">•2:發送。已經呼叫send()方法,未接收到回應</p><p style="text-align: left;">•3:接收。已經接收到部分資料</p><p style="text-align: left;">•4:完成。已經接收到全部數據,可以在<a href="http://www.php.cn/code/10550.html" target="_blank">客戶端使用</a></p><p style="text-align: left;">readyState屬性的值發生變化時,都會觸發一次readystatechange事件。在呼叫open()之前指定onreadystatechange<a href="http://www.php.cn/code/5688.html" target="_blank">事件處理</a>程式才能確保瀏覽器相容性。 </p><pre class="brush:php;toolbar:false">var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { if ((xhr.status >= 200 && xhr.status <p style="text-align: left;">在接收回應之前,可以取消非同步請求:</p><p style="text-align: left;">xhr.abort();</p><p style="text-align: left;">HTTP頭部資訊</p><p style="text-align: left;">XHR物件提供了操作請求頭部和回應頭部訊息的方法。 </p><p style="text-align: left;">預設情況下,在發送XHR請求的同時,也會傳送下列頭部訊息。 </p><p style="text-align: left;">•Accept:瀏覽器能夠處理的內容類型</p><p style="text-align: left;">•Accept-Charset:瀏覽器能夠顯示的字元集</p><p style="text-align: left;">•Accept-Encoding:瀏覽器能夠處理的壓縮編碼</p><p style="text-align: left;">•Accept-Language:瀏覽器目前設定的語言</p><p style="text-align: left;">•Connection:瀏覽器與伺服器之間連接的類型</p><p style="text-align: left;">•Cookie:目前頁面設定的任何Cookie</p><p style="text-align: left;">•Host:發出請求的頁面所在的網域</p><p style="text-align: left;">•Referer:發出請求的頁面的URL</p><p style="text-align: left;">•User-Aent:瀏覽器的使用者代理字符字串</p><p style="text-align: left;">使用setRequestHeader()可以设置自定义的请求头部信息。必须在调用open()方法之后,且在调用send()之前,调用</p><p style="text-align: left;">setRequestHeader():</p><pre class="brush:php;toolbar:false">xhr.open("get", "index.jsp", true); xhr.setRequestHeader("MyHeader", "MyValue"); xhr.send(null);
调用getResponseHeader()并传入字段名称,可以取得相应的响应头部信息。getAllResponseHeader()取得包含所有头部信息的长字符串。
var myHeader = xhr.getResponseHeader("MyHeader"); var allHeaders = xhr.getAllResponseHeader();
GET请求
GET用于向服务器查询某些信息。可以将查询字符串参数追加到URL的末尾,查询字符串中的每个参数的名称和值都必须使用encodeURIComponent()编码:
xhr.open("get", "login.jsp?name1=value1&name2=value2", false); addURLParam()接收三个参数:要添加参数的URL、参数的名称和参数的值。 var url = "login.jsp"; // 添加参数 url = addURLParam(url, "username", "xxyh"); url = addURLParam(url, "password", "xxyh123"); // 初始化请求 xhr.open("get", url, false);
POST请求
POST请求用于向服务器发送应该被保存的数据。POST请求的主体可以包含非常多的数据,而且格式不限。
初始化请求:
xhr.open("post", "login.jsp", true); 首先将Content-Type头部信息设置为application/x-www-form-urlencoded,然后建立一个字符串格式。如果需要将页面中的表单数据进行序列化,然后再通过XHR发送到服务器,可以使用serialize()函数来创建这个字符串: xhr.open("get", "login.jsp", false); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); var form = document.getElementById("user-info"); xhr.send(serialize(form));
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上是詳細解析JS中Ajax的使用技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript核心數據類型在瀏覽器和Node.js中一致,但處理方式和額外類型有所不同。 1)全局對像在瀏覽器中為window,在Node.js中為global。 2)Node.js獨有Buffer對象,用於處理二進制數據。 3)性能和時間處理在兩者間也有差異,需根據環境調整代碼。

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver Mac版
視覺化網頁開發工具