JS中Ajax入門

AJAX是網頁交互過程中,通過在後臺與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味着可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新,不必加載重複的內容,提高了交互速度。

一、XMLHttpRequest 事件

在我們與後臺交互過程中,我們首先需要創建XMLHttpRequest對象,創建後我們就可以通過發送請求到服務器,然後我們執行一些基於響應的任務。

readyState存有XMLHttpRequest的狀態信息,會隨着狀態的改變返回響應的參數,而每次 readyState 改變時,就會觸發onreadystatechange事件。

下面是 XMLHttpRequest 對象的三個重要的屬性:

屬性 描述
onreadystatechange 存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。
readyState 存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。
0: 請求未初始化
1: 服務器連接已建立
2: 請求已接收
3: 請求處理中
4: 請求已完成,且響應已就緒
status HTTP: Status 200 – 服務器成功返回網頁
HTTP: Status 404 – 請求的網頁不存在
HTTP: Status 503 – 服務不可用
二、open()函數
xml.open(method,url,boolean);

open()函數有三個參數,第一個是向後臺發送數據的方式,分別是get和post。

第二個參數是請求的地址,我們直接寫上請求的地址即可,如果是get請求的話,必要時加上我們需要發送給後臺的參數。通常的寫法如下:

//'?'是分隔符
//'&'是參數連接符
xml.open("GET","/xampp/ajax/ajax01.php?age=26&name="+name,true);

第三個參數是發送請求的同步異步:

  1. 參數爲false的時候,此爲同步進行,當代碼執行到該請求的時候,在請求尚未得到迴應,下面代碼不再執行,直到該請求超時

  2. 參數爲true的時候, 此爲異步進行,當代碼執行到該請求的時候,不論是否得到後臺迴應,代碼都會執行下去,不會出現阻塞現象

三、GET和POST請求

get請求:

xml.open("GET","/xampp/ajax/ajax01.php?name="+name,true);
xml.send(null);

post請求:

xml.open("POST","/xampp/ajax/ajax01.php",true);
xml.send("name=Gao&age=25");

二者在發送請求的區別在於get請求是將需要添加的參數放於open()函數中,send()中不發送任何信息,而post請求是將發送到後臺的信息通過send()函數發送到後臺。

同時get一般發送數據量比較小的數據,並且地址欄能看到發送的信息,所以安全性較差。而post的請求可以發送大量數據,並且前端界面看不到發送的信息,安全性較高。

四、例子

點擊按鈕,向後臺發送數據,將後臺返回的數據文本放於id=data的div中。

<body>
    <input type="text" id="name" value="LiHua" />
    <input type="button" value="按鈕" onclick="submit()"/>
    <div id="data"></div>
    <script type="text/javascript">
        var name = document.getElementById("name").value;
        function submit(){
            //在後臺與前臺交互中我們需要創建 XMLHttpRequest 對象
            var xml=new XMLHttpRequest();
            //readyState屬性發生改變觸發onreadystatechange函數
            xml.onreadystatechange=function(){
                //成功後readyState爲4,status爲200
                if(xml.readyState === 4 || xml.status === 200){
                    //獲取返回的數據
                    document.getElementById("data").innerHTML=xml.responseText;
                }
            }
            //以get的方式向後臺發送請求,並且爲異步
            xml.open("GET","ajax.php?name="+name,true);
            xml.send(null);
        }
    </script>
</body>
五、後臺代碼

之前在學習ajax的時候,不知道後臺代碼是什麼,不知道怎麼發送請求,後臺怎麼處理的,這裏我就貼出來簡單的後臺處理代碼,讓你清楚後臺簡單的一個流程。

<?php
      $name = $_GET["name"];
      echo 'Hello '.$name;
?>

這裏我用的是php後端語言,首先是聲明一個變量$name$_GET是php內帶函數,用於獲取前臺以GET請求發送的數據。echo可以輸出一個或多個字符串。輸出的內容前臺可以拿得到。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章