JavaScript實現(xiàn)Ajax總結(jié)
ajax應(yīng)用非常普及,ajax的優(yōu)點大家都知道,具體就不多說了,其缺點還真不少,比如破壞瀏覽器的back功能,同一個url打開的界面并不是完全相同,還有安全性能等方面,至于有這么多的缺點,也阻止不了大家使用ajax的步伐~~~
這里以表單為例說一下實現(xiàn)Ajax的步驟:
1.先從表單中獲取我們需要的數(shù)據(jù)
2.然后建立相應(yīng)的URL
3.設(shè)置onreadystatechange函數(shù)
4.打開連接
5.發(fā)送請求
以上就是Ajax的實現(xiàn)步驟,接下來簡單分步總結(jié)下。
首先是關(guān)于xrh對象的建立。
function creatXhr(){
var xhr=null;
if(window.XMLHttpRequest){
xhr=new XMLHttpRequest();
}else{
xhr=new ActiveXObject("Microsoft.xhr");
}
}
稍完整的可以這樣寫:
function creatXhr(){
var xhr=null;
try{
xhr=new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
try {
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}catch (e2){
xhr=false;
}
}
if(!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xhr=new XMLHttpRequest();
}
}
以上對ie和非ie瀏覽器多做了兼容處理。
然后就該發(fā)送Ajax請求了,下面以一個表單項country為例:
function callReqest(){
var country=document.getElementById('country').value;
if((country==null)||(country==''))
return;
var url='example.php?country='+encodeURIComponent(country);
xhr.onreadystatechange=update;
xhr.open('GET',url,true);
xhr.send(null);
}
以上獲取了一個country表單項, onreadystatechange 函數(shù)是readystate發(fā)生變化時觸發(fā)的事件,可以以此來判斷是否需要發(fā)生動作。
onreadystatechange 函數(shù)如下:
function onreadystatechange(){
if((xhr.onreadystatechange==4)&&((xhr.state==200)||((xhr.state>200)&&(xhr.state<300)))){
document.getElementById('countryCode').value=xhr.responseText;
}
}
在 onreadystatechange 等于4的時候,說明資源已然完全下載到客戶端了,可以使用了,同時查看狀態(tài)碼,在200到300之間,左閉右開,即可進(jìn)行刷新,這里只是簡單的將responseText給了一個表單項,當(dāng)然也可以返回XML等相關(guān)數(shù)據(jù),相關(guān)內(nèi)容可查看其他相關(guān)介紹。
最后,至于觸發(fā)Ajax,可以在表單的country里面添加onChange事件,這樣用戶在輸入表單時就會觸發(fā)Ajax了。
ps:javascript ajax小結(jié)
1.創(chuàng)建XHR對象
2、XHR對象的屬性和方法
3、readyState屬性
相關(guān)文章
Ajax方式提交帶文件上傳的表單及隱藏iframe應(yīng)用
一般的表單都是通過ajax方式提交,所以碰到帶文件上傳的表單就比較麻煩,基本原理就是在頁面增加一個隱藏iframe,然后通過ajax提交除文件之外的表單數(shù)據(jù),感興趣的你不妨了解一下,或許本文對你有所幫助2013-01-01
ajax jquery校驗用戶是否已經(jīng)注冊演示代碼
用戶是否已經(jīng)注冊的判斷方法有很多,在本文將為大家詳細(xì)介紹下如何使用ajax jquery來實現(xiàn),感興趣的朋友可以參考下2013-10-10
jquery ajax多次請求數(shù)據(jù)時 不刷新問題的解決方法
下面小編就為大家?guī)硪黄猨query ajax多次請求數(shù)據(jù)時 不刷新問題的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10
使用Jquery+Ajax+Json如何實現(xiàn)分頁顯示附JAVA+JQuery實現(xiàn)異步分頁
本文給大家介紹基于jquery+ajax+json實現(xiàn)數(shù)據(jù)分頁顯示,以及JAVA+JQuery實現(xiàn)異步分頁,本文代碼簡單易懂,非常具有參考價值,感興趣的朋友一起學(xué)習(xí)吧2015-10-10
springmvc 發(fā)送ajax出現(xiàn)中文亂碼的解決方法匯總
本文給大家介紹四種方法解決springmvc 發(fā)送ajax出現(xiàn)中文亂碼問題,非常具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧2016-03-03
用AJAX實現(xiàn)頁面登陸以及注冊用戶名驗證的簡單實例
下面小編就為大家?guī)硪黄肁JAX實現(xiàn)頁面登陸以及注冊用戶名驗證的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10
Select2在使用ajax獲取遠(yuǎn)程數(shù)據(jù)時顯示默認(rèn)數(shù)據(jù)的方法
今天小編就為大家分享一篇Select2在使用ajax獲取遠(yuǎn)程數(shù)據(jù)時顯示默認(rèn)數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08

