溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

好程序員Java學(xué)習(xí)路線分享原生Ajax的使用

發(fā)布時(shí)間:2020-06-26 12:49:03 來源:網(wǎng)絡(luò) 閱讀:203 作者:wx5d42865f47214 欄目:編程語言

好程序員Java學(xué)習(xí)路線分享原生Ajax的使用,首先我們先來看一下什么是 AJAX

????????AJAX 是一種在無需重新加載整個(gè)網(wǎng)頁的情況下,能夠更新部分網(wǎng)頁的技術(shù)。

????????AJAX 就是 異步、JavaScript 和 XML。

????????AJAX 是一種用于創(chuàng)建快速動(dòng)態(tài)網(wǎng)頁的技術(shù)。

????????通過在后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,AJAX 可以使網(wǎng)頁實(shí)現(xiàn)異步更新。這意味著可以在不重新加載整個(gè)網(wǎng)頁的情況下,對網(wǎng)頁的某部分進(jìn)行更新。

????????傳統(tǒng)的網(wǎng)頁(不使用 AJAX)如果需要更新內(nèi)容,必需重載整個(gè)網(wǎng)頁面。


AJAX 工作原理

????Browser瀏覽器 ???????????Server服務(wù)器

????發(fā)起事件

????創(chuàng)建XMLHttpRequest對象

????發(fā)送請求 ???????????????

????????????????????????????接收客戶端發(fā)送的對象

????????????????????????????回復(fù)一個(gè)ResponseText對象

????接收ResponseText結(jié)果

????更新頁面局部數(shù)據(jù)

??????????????????????????????????????????????????????

XMLHttpRequest 對象

????XMLHttpRequest 是 AJAX 的基礎(chǔ)。

????所有現(xiàn)代瀏覽器均支持 XMLHttpRequest 對象(IE5 和 IE6 使用 ActiveXObject)。

????XMLHttpRequest 用于在后臺(tái)與服務(wù)器交換數(shù)據(jù)。這意味著可以在不重新加載整個(gè)網(wǎng)頁的情況下,對網(wǎng)頁的某部分進(jìn)行更新。


創(chuàng)建 XMLHttpRequest 對象

????所有現(xiàn)代瀏覽器(IE7+、Firefox、Chrome、Safari 以及 Opera)均內(nèi)建 XMLHttpRequest 對象。

????創(chuàng)建 XMLHttpRequest 對象的語法:

????variable=new XMLHttpRequest();


????為了應(yīng)對所有的現(xiàn)代瀏覽器,包括 IE5 和 IE6,請檢查瀏覽器是否支持 XMLHttpRequest 對象。如果支持,則創(chuàng)建 XMLHttpRequest 對象。如果不支持,則創(chuàng)建 ActiveXObject :


????**實(shí)例**

????var xmlhttp;

????if (window.XMLHttpRequest)

????{

????????// ?IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執(zhí)行代碼

????????xmlhttp=new XMLHttpRequest();

????}

????else

????{

????????// IE6, IE5 瀏覽器執(zhí)行代碼

????????xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

????}


AJAX - 向服務(wù)器發(fā)送請求請求


????XMLHttpRequest 對象用于和服務(wù)器交換數(shù)據(jù)。

????向服務(wù)器發(fā)送請求

????????如需將請求發(fā)送到服務(wù)器,我們使用 XMLHttpRequest 對象的 open() 和 send() 方法:

????????????xmlhttp.open("GET","ajax_info.txt",true);

????????????xmlhttp.send();

????open(method,url,async) 規(guī)定請求的類型、URL 以及是否異步處理請求。

????????method:請求的類型;GET 或 POST

????????url:文件在服務(wù)器上的位置

????????async:true(異步)或 false(同步)

????send(string) 將請求發(fā)送到服務(wù)器。

????????string:僅用于 POST 請求


GET 還是 POST?

????與 POST 相比,GET 更簡單也更快,并且在大部分情況下都能用。

????然而,在以下情況中,請使用 POST 請求:

????????無法使用緩存文件(更新服務(wù)器上的文件或數(shù)據(jù)庫)

????????向服務(wù)器發(fā)送大量數(shù)據(jù)(POST 沒有數(shù)據(jù)量限制)

????????發(fā)送包含未知字符的用戶輸入時(shí),POST 比 GET 更穩(wěn)定也更可靠


**GET 請求**

????

????xmlhttp.open("GET","/try/ajax/demo_get.php",true);

????xmlhttp.send();


????如果您希望通過 GET 方法發(fā)送信息,請向 URL 添加信息:


????xmlhttp.open("GET","/try/ajax/demo_get2.php?fname=Henry&lname=Ford",true);

xmlhttp.send();


**POST 請求**

????

????一個(gè)簡單 POST 請求:


????xmlhttp.open("POST","/try/ajax/demo_post.php",true);

????xmlhttp.send();

????

????如果需要像 HTML 表單那樣 POST 數(shù)據(jù),請使用 setRequestHeader() 來添加 HTTP 頭。然后在 send() 方法中規(guī)定您希望發(fā)送的數(shù)據(jù):


????xmlhttp.open("POST","/try/ajax/demo_post2.php",true);

????xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

????xmlhttp.send("fname=Henry&lname=Ford");


AJAX - 服務(wù)器 響應(yīng)


????請規(guī)定在響應(yīng)處于 onreadystatechange 事件中的就緒狀態(tài)時(shí)執(zhí)行的函數(shù):


????服務(wù)器響應(yīng)如需獲得來自服務(wù)器的響應(yīng),請使用 XMLHttpRequest 對象的 responseText 或 responseXML 屬性。

????responseText 獲得字符串形式的響應(yīng)數(shù)據(jù)。

????responseXML 獲得 XML 形式的響應(yīng)數(shù)據(jù)。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI