JavaScript本來就很簡單(神說ajax)

js中的ajax

ajax:異步的JavaScript和XML,首先它是一門用于前后臺數(shù)據(jù)交互的技術,這里有兩個比較有趣的概念(同步與異步)說白了就是后臺傳回來的數(shù)據(jù),同步的話,你必須刷新頁面才能更新數(shù)據(jù),而異步更新的話,可以在不刷新頁面的情況下,實現(xiàn)頁面數(shù)據(jù)的更新


ajax的好處:舉個簡單的例子,表單驗證,在ajax技術出現(xiàn)之前,咱們都是把表單填寫完成,然后提交給后臺進行驗證,后臺如果發(fā)現(xiàn)有一個表單填寫的不符合規(guī)范,就會將數(shù)據(jù)返回給前臺,前臺刷新頁面重新填寫,所以的表單都得重新填寫,這樣就很氣知道嗎?很氣?。。?后來就有了ajax,你可以填完一個然后ajax就會跑到后臺去驗證,驗證完了,然后再跑回來告訴你,填寫的行不行,要求重新填寫,而且還不用刷新頁面,,哈哈,是不是很厲害呢


ajax說白了就是前臺和后臺之間數(shù)據(jù)傳遞的一門技術,再往白了說,就是跑腿的,假如前臺頁面需要一個數(shù)據(jù)了,好,ajax你去后臺跑一趟,把數(shù)據(jù)給我取回來,然后ajax就去了,后臺給了它一串數(shù)據(jù),最后跑回來了,把數(shù)據(jù)給了我們前臺。這個過程其實特別簡單,ajax的一個關鍵就是,他取數(shù)據(jù)的這個過程,咱們前臺該干嘛還是干嘛,并不影響,也就是說相當于開辟了兩個空間,一個空間繼續(xù)做你該做的事,另一個空間去取數(shù)據(jù),ajax去取數(shù)據(jù),其他人毫不影響,而且取回來直接就可以用,不用刷新頁面,或者說的更準確一點,實現(xiàn)局部刷新


ajax具體實現(xiàn)方式

  • 核心就是對象,首先創(chuàng)建一個XMLHttpRequest對象,然后連接后臺,發(fā)送請求,最后接受后臺返回來的數(shù)據(jù)即可
var xhr ;
        if(window.XMLHttpRequest){
            xhr = new XMLHttpRequest();//現(xiàn)代瀏覽器實例化ajax對象方式
        }else{
            xhr = new ActiveXObject('Microsoft.XMLHTTP'); //IE瀏覽器實例化ajax對象方式

        }
//這里進行的是針對IE瀏覽器的兼容性處理,在IE中,我們的XMLHttpRequest對象就變成了ActiveXObject,而且里邊的參數(shù)是不能少的
  • 上面提到了用ajax就簡單的幾步而已,
  • 第一步實例化ajax對象,
  • 第二步連接后臺,:怎么連接呢,ajax對象給我們提供了一個方法:open("指定提交的方式get或者post","后臺的url地址","是否使用異步,默認true使用異步")
  • 第三步發(fā)送請求:send(發(fā)送的數(shù)據(jù))有時候我們需要給后臺發(fā)送一些數(shù)據(jù),比如你只想要第一條數(shù)據(jù),這個時候你就send的時候告訴后臺我只要第一條,別的不要
  • 第四步接受后臺給我們返回來的數(shù)據(jù)

get與 post的區(qū)別:都是給后臺提交數(shù)據(jù)的方式,區(qū)別就是get提交的時候把數(shù)據(jù)放到請求地址的后面,這樣就會很不安全,大家都可以看到、而post提交的數(shù)據(jù)會進行加密,所以比較安全,get傳遞的數(shù)據(jù)量比較少,post傳遞的數(shù)據(jù)量比較大


我們發(fā)送了ajax請求,但是我們并不知道是否發(fā)送成功了并且服務器是否處理了我們的請求,以及是否返回給我們前臺,這兒就需要用到一個東西,可以讓我們很好的檢測ajax請求的過程

  • ajax對象身上有一個readystate屬性,表示ajax整個請求的狀態(tài):
    • 0:請求并沒有發(fā)出(沒有建立與后臺的聯(lián)系,open之前)
    • 1 :請求已經(jīng)建立還沒有發(fā)出
    • 2 :請求已經(jīng)發(fā)送
    • 3 :請求正在處理
    • 4 :請求已經(jīng)被處理完畢
    • 每當readystate狀態(tài)改變的時候,就會調(diào)用onreadystatechange()函數(shù),所以我們可以在這個函數(shù)中做相應的判斷,當readystate為4時,表示請求成功的被后臺執(zhí)行、在這兒還要提一個屬性就是:status屬性,表示狀態(tài)碼,有很多很多,在這兒就說一個,200這個狀態(tài)碼就表示后臺成功返回了數(shù)據(jù)。
xhr.onreadystatechange = function(){
     if(xhr.readystate == 4){//請求已經(jīng)成功被處理
         if(xhr.status == 200){//成功的從服務器得到了響應
             //這里進行處理返回的數(shù)據(jù)
        }
    }
}

ajax在jQuery中的應用

$.ajax({
                    type:"post",  //請求方式
                    url:"a.php", //服務器的鏈接地址
                    dataType:"json", //傳送和接受數(shù)據(jù)的格式
                    data:{
                        username:"james",
                        password:"123456"
                    },
                    success:function(data){//接受數(shù)據(jù)成功時調(diào)用的函數(shù)
                       console.log(data);//data為服務器返回的數(shù)據(jù)
                    },
                    error:function(request){//請求數(shù)據(jù)失敗時調(diào)用的函數(shù)
                        alert("發(fā)生錯誤:"+request.status);
                    }
});

本文有不完善的地方,希望大家評論指正,本文首發(fā)于csdn博客喜歡的可以去點個贊,謝謝大家

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • AJAX 原生js操作ajax 1.創(chuàng)建XMLHttpRequest對象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,561評論 0 7
  • 轉(zhuǎn)載地址:http://www.cnblogs.com/mingmingruyuedlut/archive/201...
    matianhe閱讀 1,734評論 0 129
  • 大家好,我是IT修真院深圳分院第3期的學員,一枚正直純潔善良的前端程序員,今天給大家分享一下,修真院官網(wǎng)前端工程師...
    大大頭大閱讀 8,086評論 1 72
  • 限定從屬分句就是我們傳統(tǒng)意義上的從句。從句依附于主句?,不能獨立成句但是具有主語與謂語部分。 從句內(nèi)容的分類 1....
    高鳥知更閱讀 1,438評論 0 1
  • 00金風玉露初相逢,鬼斧神功天鑄就 在江湖中,你若見過神醫(yī)顧十九,你定會聽他提起一段悠悠往事。據(jù)他回憶,那日的黃鶴...
    守素閱讀 1,454評論 76 30

友情鏈接更多精彩內(nèi)容