對ajax的瞭解
1.什麼是ajax?
ajax的英文名稱:Asynchronous JavaScript and XML(非同步的javascript和xml),ajax是一種無需重新載入頁面,自動更新部分頁面的技術,ajax的使用案例:百度的搜尋框的關鍵字、登陸和註冊的表單驗證、股票資訊的自動更新等。
2.傳統的開發模式與ajax的開發模式的不同之處
傳統的開發模式:同步執行,頁面需要重新載入才可以有頁面資訊,效率不高。
ajax的開發模式:非同步執行,頁面不需要重新載入,自動更新頁面資訊,效率高。
3.ajax.js檔案的編寫步驟
(1)、建立ajax物件
建立XMLHTTPRequest物件,用於後臺和伺服器的交換資料,意味著:能無需重新載入頁面的情況下,自動更新頁面。注意:XMLHTTPRequest物件是所有瀏覽器都支援的物件,當然老版本的瀏覽器還不支援,如:IE7以下的版本。還是需要考慮相容性問題。
demo:
//1.建立ajax物件
var xmlhttp;
if (window.XMLHttpRequest)
{// 相容 IE7+, Firefox火狐, Chrome谷歌, Opera歐朋, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// 相容 IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
(2)、連線伺服器
//2.連線伺服器
//open(方法, 檔名, 非同步傳輸)
oAjax.open('GET', 'a.txt', true );
(3)、傳送請求
//3.傳送請求
oAjax.send();
(4)、接受返回值
請求狀態監控:onreadystatechange事件
readyState屬性:請求狀態
0 (未初始化)還沒有呼叫open()方法,尚未初始化
1 (載入)已呼叫send()方法,正在傳送請求,正在載入
2 (載入完成)send()方法完成,已收到全部響應內容,載入完成
3 (解析)正在解析響應內容,正在處理
4 (完成)響應內容解析完成,可以在客戶端呼叫了,處理完成
status屬性:請求結果
demo:
//4.接收返回
oAjax.onreadystatechange=function ()
{//
//oAjax.readyState //瀏覽器和伺服器,進行到哪一階段了
if(oAjax.readyState==4) //處理完成,
{
if(oAjax.status==200) //成功,200狀態碼
{
alert('成功:'+oAjax.responseText);//成功就返回文字資訊
}
else
{
alert('失敗:'+oAjax.status);
}//失敗就返回狀態碼
}
};
4.ajax的使用過程
a、先寫好ajax.js檔案,並連線到靜態頁面html
b、寫好文字,放在伺服器站點上
demo:
<script>
window.onload=function ()
{//頁面載入時
var oBtn=document.getElementById('btn1');
oBtn.onclick=function ()
{//oBnt物件點選事件,呼叫ajax.js檔案裡的ajax(url, fnSucc, fnFaild)方法,注意url檔案路徑必須是英文,不可有中文,相對路徑或絕對路徑都可以。
ajax('aaa.txt', function (str){
alert(str);//成功則返回文字中的內容
}, function (){
alert('失敗');//不成功返回‘失敗’
});
};
};
</script>
c、處理快取方法
阻止快取方法:瀏覽器通過訪問url的來識別決定是否使用快取,(只要url地址在變,就可以瞭解決快取問題)。也可以在路徑那裡加上get資料來阻止快取。getTime()是毫秒數
demo:
<script>
window.onload=function ()
{
var oBtn=document.getElementById('btn1');
oBtn.onclick=function ()
{
ajax('aaa.txt?t='+new Date().getTime(), function (str){//在url路徑上新增get方法即可阻止快取問題,當然也可以在瀏覽器上改變url路勁
alert(str);//var arr=eval(str);ajax.js讀取的資料是字串,如果文字內容是陣列,要將陣列變字串,就要使用到eval()方法
}, function (){
alert('失敗');
});
};
};
</script>
5.HTTP請求方法
GET是用於獲取資料(如:瀏覽帖子):
POST是用於上傳資料(如:使用者註冊):
get、post的區別:
get是在url裡傳資料、安全性不高,容易洩露資訊內容,容量小:有快取,
post安全比較好,不通過網址url傳遞資訊,可以傳大檔案:2G,容量大,沒有快取