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ì)象,全寫(xiě)是 window.xmlhttprequest對(duì)象,由于瀏覽器的版本不同,特別是老版本的ie瀏覽器,雖然也支持ajax引擎,但是寫(xiě)法上有區(qū)別,在ie低版本中通常用 activexobject對(duì)象來(lái)創(chuàng)建ajax引擎。 ajax 來(lái)自英文“asynchronous javascript and xml” 的縮寫(xiě),也稱為異步j(luò)avascript和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è)的用戶名為例給大家寫(xiě)一個(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"></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編寫(xiě),根據(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í)有所幫助,也希望大家多多支持碩編程。

相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频