1. 程式人生 > >對ajax的瞭解

對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,容量大,沒有快取