Ajax引擎 ajax請(qǐng)求步驟詳細(xì)代碼
說(shuō)起AJAX,可能是很多同學(xué)在很多地方都看到過(guò),各大招聘網(wǎng)站上對(duì)于WEB前端和PHP程序員的技能要求清單中也是必不可少的一項(xiàng)。但是,ajax請(qǐng)求步驟詳細(xì)代碼以及說(shuō)明卻比較少見(jiàn)到
什么是AJAX引擎?
AJAX引擎其實(shí)是一個(gè)JavaScript對(duì)象,全寫是 window.XMLHttpRequest對(duì)象,由于瀏覽器的版本不同,特別是老版本的IE瀏覽器,雖然也支持AJAX引擎,但是寫法上有區(qū)別,在IE低版本中通常用 ActiveXObject對(duì)象來(lái)創(chuàng)建AJAX引擎。 AJAX 來(lái)自英文“Asynchronous Javascript And XML” 的縮寫,也稱為異步JavaScript和XML。 簡(jiǎn)言之,就是一個(gè)JS對(duì)象,可以實(shí)現(xiàn)在網(wǎng)頁(yè)加載完成以后,不用刷新的情況下與服務(wù)器交互。產(chǎn)生極好的用戶體驗(yàn)效果。
AJAX用來(lái)做什么?
AJAX技術(shù)廣泛應(yīng)用于實(shí)現(xiàn)用戶體驗(yàn)良好的一個(gè)個(gè)交互功能,比如:
搜索產(chǎn)品時(shí)的關(guān)鍵詞推薦
注冊(cè)新用戶的重名提示
現(xiàn)在網(wǎng)站幾乎全部都使用Ajax技術(shù),最具有代表使用Ajax技術(shù)的網(wǎng)站有:新浪微博、Google地圖、百度搜索、淘寶網(wǎng)等等。
AJAX的實(shí)現(xiàn)原理
Ajax的原理簡(jiǎn)單來(lái)說(shuō)通過(guò)瀏覽器的javascript對(duì)象XMLHttpRequest(Ajax引擎)對(duì)象向服務(wù)器發(fā)送異步請(qǐng)求并接收服務(wù)器的響應(yīng)數(shù)據(jù),然后用javascript來(lái)操作DOM而更新頁(yè)面。這其中最關(guān)鍵的一步就是從服務(wù)器獲得請(qǐng)求數(shù)據(jù)。即用戶的請(qǐng)求間接通過(guò)Ajax引擎發(fā)出而不是通過(guò)瀏覽器直接發(fā)出,同時(shí)Ajax引擎也接收服務(wù)器返回響應(yīng)的數(shù)據(jù),所以不會(huì)導(dǎo)致瀏覽器上的頁(yè)面全部刷新。
AJAX請(qǐng)求步驟詳細(xì)代碼
由于AJAX是一項(xiàng)從客戶端發(fā)起,和服務(wù)器進(jìn)行交互的技術(shù),所以必須涉及兩個(gè)方面:客戶端和服務(wù)器端,下面咱們以會(huì)員注冊(cè)的用戶名為例給大家寫一個(gè)AJAX的詳細(xì)請(qǐng)求步驟和代碼:
客戶端代碼 reg.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>AJAX引擎實(shí)現(xiàn)用戶名重名檢測(cè)</title> </head> <body> <form> <p>用戶名:<input type="text" name="username" id="username"/> <span id="result"></span></p> <p>密碼:<input type="password" name="pwd1"/></p> <p>確認(rèn)密碼:<input type="password" name="pwd2"/></p> <p><input type="button" value="立即注冊(cè)"/></p> </form> <script type="text/javascript"> var username=document.getElementById('username'); //用戶名輸入框失去焦點(diǎn)時(shí)觸發(fā) username.onblur=function(){ //主角登場(chǎng)——AJAX引擎的創(chuàng)建及使用詳細(xì)代碼來(lái)了 var ajax=new XMLHttpRequest(); //創(chuàng)建AJAX引擎實(shí)例 //創(chuàng)建GET請(qǐng)求,發(fā)送請(qǐng)求時(shí)傳username值 ajax.open('GET','check.php?username='+this.value); //當(dāng)AJAX引擎的狀態(tài)產(chǎn)生改變時(shí)觸發(fā)onreadystatechange屬性指向的函數(shù)(多次執(zhí)行) //狀態(tài)值有5個(gè):0 1 2 3 4 ,其中4表示服務(wù)器端響應(yīng)就緒 ajax.onreadystatechange=function(){ //必須在服務(wù)器響應(yīng)就緒,并且HTTP的狀態(tài)碼是200時(shí)才接收數(shù)據(jù) //ajax.readyState 獲取到服務(wù)器響應(yīng)狀態(tài)碼,必須是4才表示就緒 //ajax.status 獲取到HTTP的狀態(tài)碼,必須是200才表示成功 if(ajax.readyState==4 && ajax.status==200){ //ajax.responseText 接收服務(wù)器響應(yīng)回來(lái)的內(nèi)容 //console.log(ajax.responseText); //接收到服務(wù)器響應(yīng)數(shù)據(jù)后,AJAX工作已完成,可根據(jù)結(jié)果顯示提示信息 If(ajax.responseText=='1'){ result.innerHTML='該用戶名太受歡迎,請(qǐng)重新選擇'; result.style.color='#f00'; //將字體設(shè)置為紅色 }else{ result.innerHTML='恭喜你,可以注冊(cè)'; result.style.color='#0a0'; //將字體設(shè)置為綠色 } } } ajax.send(); //發(fā)送請(qǐng)求 } </script> </body> </html>
服務(wù)器端代碼 check.php
//服務(wù)器端的代碼可以使用PHP編寫,根據(jù)邏輯反饋數(shù)據(jù)給客戶端實(shí)現(xiàn)驗(yàn)證功能 $username=$_GET['username']; //連接數(shù)據(jù)庫(kù)的代碼省略 $sql="select id from users where username='$username'"; $rs=mysqli_query($link,$sql); //將構(gòu)造好的SQL語(yǔ)句發(fā)到服務(wù)器上執(zhí)行 if( mysqli_num_rows($rs) ){ echo '1'; //如果用戶名找到有結(jié)果,證明該用戶名已存在,返回1 }else{ echo '0'; //如果用戶名未找到結(jié)果,證明該用戶名不存在,返回0 } //關(guān)閉數(shù)據(jù)庫(kù)連接,釋放結(jié)果集
==附:AJAX的方法和屬性表==
方法:
屬性:
最后,注意一個(gè)重要的問(wèn)題,XMLHttpRequest對(duì)象是沒(méi)有跨域能力的,也就是說(shuō) ajax不能請(qǐng)求獲得其它網(wǎng)站的數(shù)據(jù),那有沒(méi)有解決辦法呢? 答案是肯定的,需要使用JSONP
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:Ajax實(shí)現(xiàn)表格中信息不刷新頁(yè)面進(jìn)行更新數(shù)據(jù)
欄 目:AJAX相關(guān)
本文標(biāo)題:Ajax引擎 ajax請(qǐng)求步驟詳細(xì)代碼
本文地址:http://mengdiqiu.com.cn/a1/AJAXxiangguan/11294.html
您可能感興趣的文章
- 01-11ajax請(qǐng)求后臺(tái)得到j(luò)son數(shù)據(jù)后動(dòng)態(tài)生成樹(shù)形下拉框的方法
- 01-11layui的checbox在Ajax局部刷新下的設(shè)置方法
- 01-11ajax獲得json對(duì)象數(shù)組 循環(huán)輸出數(shù)據(jù)的方法
- 01-11解決ajax請(qǐng)求后臺(tái),有時(shí)收不到返回值的問(wèn)題
- 01-11詳談ajax返回?cái)?shù)據(jù)成功 卻進(jìn)入error的方法
- 01-11解決AJAX返回狀態(tài)200沒(méi)有調(diào)用success的問(wèn)題
- 01-11快速解決ajax返回值給外部函數(shù)的問(wèn)題
- 01-11Ajax實(shí)現(xiàn)動(dòng)態(tài)顯示并操作表信息的方法
- 01-11ajax實(shí)現(xiàn)從后臺(tái)拿數(shù)據(jù)顯示在HTML前端的方法
- 01-11ajax動(dòng)態(tài)查詢數(shù)據(jù)庫(kù)數(shù)據(jù)并顯示在前臺(tái)的方法


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-11layui的checbox在Ajax局部刷新下的設(shè)置方
- 01-11ajax請(qǐng)求后臺(tái)得到j(luò)son數(shù)據(jù)后動(dòng)態(tài)生成樹(shù)
- 01-11ajax獲得json對(duì)象數(shù)組 循環(huán)輸出數(shù)據(jù)的
- 01-11解決ajax請(qǐng)求后臺(tái),有時(shí)收不到返回值的
- 01-11詳談ajax返回?cái)?shù)據(jù)成功 卻進(jìn)入error的方
- 01-11解決AJAX返回狀態(tài)200沒(méi)有調(diào)用success的問(wèn)
- 01-11快速解決ajax返回值給外部函數(shù)的問(wèn)題
- 01-11Ajax實(shí)現(xiàn)動(dòng)態(tài)顯示并操作表信息的方法
- 01-11ajax實(shí)現(xiàn)從后臺(tái)拿數(shù)據(jù)顯示在HTML前端的
- 01-11ajax動(dòng)態(tài)查詢數(shù)據(jù)庫(kù)數(shù)據(jù)并顯示在前臺(tái)
隨機(jī)閱讀
- 04-02jquery與jsp,用jquery
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-11Mac OSX 打開(kāi)原生自帶讀寫NTFS功能(圖文
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載