本篇文章主要的介紹了關於ajax的定義,還有關於ajax的具體使用情況,現在大家來一起閱讀本篇文章吧
1.什麼是Ajax?
允許瀏覽器與伺服器通訊而無需刷新目前頁面的技術,稱為Ajax。而在實際程式設計過程中,常常將XMLHttpRequest作為Ajax的代名詞,XMLHttpRequest就是JavaScript的一個擴充。
2.XMLHttpRequest
2.1建立XMLHttpReques物件:
var request = new XMLHttpReques();
2.2XMLHttpReques常用物件的方法與屬性:
2.3使用JavaScript語言進行程式設計
nbsp;html> <meta> <title>HelloWorld</title> <script> window.onload = function(){ //1.为a节点添加点击事件 document.getElementsByTagName("a")[0].onclick = function(){ //3.创建XMLHttpRequest对象 var request = new XMLHttpRequest(); //4.准备请求参数url method var url = this.href + "?time=" + new Date(); var method = "GET"; //5.调用 XMLHttpRequest 对象的 open 方法 request.open(method,url); //6.调用 XMLHttpRequest 对象的 send 方法 request.send(null); //7.为XMLHttpRequest对象添加onreadystatechange响应函数 request.onreadystatechange = function(){ //8.判断响应是否完成:XMLHttpReques对象的 readState 为 4 if(request.readyState == 4){ //9.再判断响应是否可用: XMLHttpReques对象的status 为 200 if(request.status == 200 || request.status == 304){ //10.打印相应结果:responseText alert(request.responseText); } } } //2.取消默认行为,阻止点击页面跳转 return false; } } </script> <a>Hello</a>
利用XMLHttpRequest實例與伺服器通訊包含了3個關鍵:
①onreadystatechange事件處理函數:
--|此事件處理函數由伺服器觸發,而非使用者;
--|在Ajax 執行過程中,伺服器會通知客戶端目前的通訊狀態。這依賴更新 XMLHttpRequest 物件的 readyState 來實現。改變 readyState 屬性是伺服器對客戶端連線操作的一種方式。 每次readyState 屬性的改變都會觸發readystatechange 事件
②open(method, url, asynch):
--|XMLHttpRequest物件的open 方法允許程式設計師用一個Ajax呼叫向伺服器發送請求。
--|method:請求類型,類似 “GET”或”POST”的字串。若只想從伺服器檢索一個文件,而不需要發送任何數據,使用GET(可以在GET請求里通過附加在URL上的查詢字符串來發送數據,不過數據大小限制為2000個字符)。若需要傳送數據,請使用 POST。
--|在某些情況下,有些瀏覽器會把多個XMLHttpRequest請求的結果快取在同一個URL。如果對每個請求的回應不同,就會帶來不好的結果。在此將時間戳追加到URL的最後,就能確保URL的唯一性,從而避免瀏覽器快取結果。
--|url:路徑字串,指向你所要求的伺服器上的那個檔案。可以是絕對路徑或相對路徑。
--|asynch:表示請求是否要非同步傳輸,預設值為true。指定true,在讀取後面的腳本之前,不需要等待伺服器的對應。指定false,當腳本處理過程經過這點時,會停下來,一直等到Ajax請求執行完畢再繼續執行(想看更多就到PHP中文網AJAX開發手冊欄位學習)
③send(data):
--|open 方法定義了Ajax 請求的一些細節。 send 方法可為已經待命的請求傳送指令
--|data:將要傳遞給伺服器的字串。
--|若選用的是GET 請求,則不會發送任何數據, 給send 方法傳遞null 即可:request.send(null);
--|當向send ()方法提供參數時,要確保open()中指定的方法是POST,如果沒有資料作為請求體的一部分發送,則使用null.
#④setRequestHeader(header,value):
--|當瀏覽器向伺服器請求頁面時,它會伴隨這個請求發送一組首部訊息。這些首部資訊是一系列描述請求的元資料(metadata)。 首部資訊用來宣告一個請求是 GET 還是 POST。
--|Ajax 請求中,發送首部訊息的工作可以由 setRequestHeader該完成
--|參數header: 首部的名字; 參數value:首部的值。
--|如果用POST 請求向伺服器發送數據,需要將 “Content-type” 的首部設定為“application/x-www-form-urlencoded”.它會告知伺服器正在發送數據,並且數據已經符合URL編碼了。
--|該方法必須在open()之後才能呼叫
⑤readyState
--|readyState 屬性表示Ajax請求的當前狀態。它的值用數字代表。
----|0 代表未初始化。還沒有呼叫 open 方法
----|1 代表正在載入。 open 方法已被調用,但 send 方法還沒有被調用
----|2 代表已載入完畢。 send 已被調用。請求已經開始
----|3 代表互動中。伺服器正在發送回應
----|4 代表完成。回應發送完畢
--|每次 readyState 值的改变,都会触发 readystatechange 事件。如果把 onreadystatechange 事件处理函数赋给一个函数,那么每次 readyState 值的改变都会引发该函数的执行。
--|readyState 值的变化会因浏览器的不同而有所差异。但是,当请求结束的时候,每个浏览器都会把 readyState 的值统一设为 4
⑥status
--|服务器发送的每一个响应也都带有首部信息。三位数的状态码是服务器发送的响应中最重要的首部信息,并且属于超文本传输协议中的一部分。
--|常用状态码及其含义:
----|404 没找到页面(not found)
----|403 禁止访问(forbidden)
----|500 内部服务器出错(internal service error)
----|200 一切正常(ok)
----|304 没有被修改(not modified)
--|在 XMLHttpRequest 对象中,服务器发送的状态码都保存在 status 属性里。通过把这个值和 200 或 304 比较,可以确保服务器是否已发送了一个成功的响应
⑦responseText
--|XMLHttpRequest 的 responseText 属性包含了从服务器发送的数据。它是一个HTML,XML或普通文本,这取决于服务器发送的内容。
--|当 readyState 属性值变成 4 时, responseText 属性才可用,表明 Ajax 请求已经结束。
⑧responseXML
--|如果服务器返回的是 XML, 那么数据将储存在 responseXML 属性中。
--|只用服务器发送了带有正确首部信息的数据时, responseXML 属性才是可用的。 MIME 类型必须为 text/xml
3.Ajax的数据格式(HTML XML JSON)
3.1 HTML
(1)HTML 由一些普通文本组成。如果服务器通过 XMLHttpRequest 发送 HTML, 文本将存储在 responseText 属性中。
(2)不必从 responseText 属性中读取数据。它已经是希望的格式,可以直接将它插入到页面中。
(3)插入 HTML 代码最简单的方法是更新这个元素的 innerHTML 属性。
window.onload = function(){ var aNodes = document.getElementsByTagName("a"); for(var i = 0;i <p>3.2 XML</p><p>优点:<br>(1)XML 是一种通用的数据格式。<br>(2)不必把数据强加到已定义好的格式中,而是要为数据自定义合适的标记。<br>(3)利用 DOM 可以完全掌控文档。<br>缺点:<br>(1)如果文档来自于服务器,就必须得保证文档含有正确的首部信息。若文档类型不正确,那么 responseXML 的值将是空的。<br>(2)当浏览器接收到长的 XML 文件后, DOM 解析可能会很复杂</p><pre class="brush:php;toolbar:false">window.onload = function(){ var aNodes = document.getElementsByTagName("a"); for(var i = 0;i <a>Andy Budd</a> * <a>http://andybudd.com/</a> */ var name = result.getElementsByTagName("name")[0].firstChild.nodeValue; var website = result.getElementsByTagName("website")[0].firstChild.nodeValue; var email = result.getElementsByTagName("email")[0].firstChild.nodeValue; //创建节点,并且添加到p节点中 var aNode = document.createElement("a"); aNode.appendChild(document.createTextNode(name)); aNode.href = "mailto:" + email; var h2Node = document.createElement("h2"); h2Node.appendChild(aNode); var aNode2 = document.createElement("a"); aNode2.appendChild(document.createTextNode(website)); aNode2.href = website; var detailsNode = document.getElementById("details"); detailsNode.innerHTML = ""; detailsNode.appendChild(h2Node); detailsNode.appendChild(aNode2); } } } return false; } } }
3.3 JSON
(1)JSON(JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包。
(2)JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。
window.onload = function(){ var aNodes = document.getElementsByTagName("a"); for(var i = 0;i <p><span style="background-color:rgb(255,204,102);">4.使用jQuery实现Ajax技术</span></p><p>jQuery 对 Ajax 操作进行了封装, 在 jQuery 中最底层的方法时 $.ajax(), 第二层是<span style="background-color:rgb(255,204,255);"> load(), $.get() 和 $.post()</span>, 第三层是 $.getScript() 和 $.getJSON()。<br></p><p>4.1 load() 方法</p><pre class="brush:php;toolbar:false">$(function(){ $("a").click(function(){ var url = this.href; var args = {"time":new Date()}; $("#details").load(url); return false; }); })
(1)load() 方法是 jQuery 中最为简单和常用的 Ajax 方法, 能载入远程的 HTML 代码并插入到 DOM 中. 它的结构是: load(url[, data][,callback]),其中url:String类型,请求HTML页面的URL地址;data(可选):Object类型,发送到服务器的key/value数据;callback(可选):Function类型,请求完成时的回调函数,无论请求成功还是失败。
(2)如果只需要加载目标 HTML 页面内的某些元素, 则可以通过 load() 方法的 URL 参数来达到目的. 通过 URL 参数指定选择符, 就可以方便的从加载过来的 HTML 文档中选出所需要的内容. load() 方法的 URL 参数的语法结构为 “url selector”(注意: url 和 选择器之间有一个空格)
$(function(){ $("a").click(function(){ //选择返回HTML结果页面中的h2后代a元素 var url = this.href + " h2 a"; var args = {"time":new Date()}; $("#details").load(url); return false; }); })
(3)传递方式: load() 方法的传递参数根据参数 data 来自动自定. 如果没有参数传递, 采用 GET 方式传递, 否则采用 POST 方式
(4)对于必须在加载完才能继续的操作, load() 方法提供了回调函数, 该函数有三个参数: 代表请求返回内容的 data; 代表请求状态的 textStatus 对象和 XMLHttpRequest 对象
4.2$.get()或$.post() 方法
4.2.1加载XML数据
$(function(){ $("a").click(function(){ var url = this.href; args = {"time" : new Date()}; $.get(url,args,function(data){ var name = $(data).find("name").text(); var email = $(data).find("email").text(); var website = $(data).find("website").text(); $("#details").empty() .append("<h2 id="a-name-a"><a>" + name +"</a></h2>") .append("<a>" + website + "</a>"); }) return false; }); })
4.2.2加载HTML数据
$(function(){ $("a").click(function(){ var url = this.href; var args = {"time" : new Date()}; $.get(url,args,function(data){ $("#details").empty(); $(data).appendTo($("#details")); }); return false; }); })
4.2.3加载JSON数据
$(function(){ $("a").click(function(){ var url = this.href; args = {"time" : new Date()}; $.get(url,args,function(data){ var name = data.person.name; var email = data.person.email; var website = data.person.website; $("#details").empty() .append("<h2 id="a-name-a"><a>" + name +"</a></h2>") .append("<a>" + website + "</a>"); },"JSON") return false; }); })
(1)$.get() 方法使用 GET 方式来进行异步请求. 它的结构是: $.get(url[, data][, callback][, type]),其中:url:String类型,请求HTML页面的URL地址;data(可选):Object类型,发送到服务器的key/value数据;callback(可选):Function类型,请求完成时的回调函数,无论请求成功还是失败;type(可选):String类型,服务器返回内容的格式,可以是xml,json,html,text等类型。
(2)$.get() 方法的回调函数只有两个参数: data 代表返回的内容, 可以是 XML 文档, JSON 文件, HTML 片段等; textstatus 代表请求状态, 其值可能为: succuss, error, notmodify, timeout 4 种.
(3)$.get() 和 $.post() 方法时 jQuery 中的全局函数, 而 find() 等方法都是对 jQuery 对象进行操作的方法
5.$.getJSON()方法
$(function(){ $("a").click(function(){ var url = this.href; args = {"time" : new Date()}; $.getJSON(url,args,function(data){ var name = data.person.name; var email = data.person.email; var website = data.person.website; $("#details").empty() .append("<h2 id="a-name-a"><a>" + name +"</a></h2>") .append("<a>" + website + "</a>"); }); return false; }); })
本篇文章到这就结束了(想看更多就到PHP中文网AJAX使用手册栏目中学习),有问题的可以在下方留言提问。
以上是什麼是ajax? ajax的詳細使用流程(內附完整實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

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

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

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