1. 程式人生 > >JS——AJAX

JS——AJAX

win 觸發 情況下 class safari 點擊 height 情況 ext

向服務器發送請求如需將請求發送到服務器,我們使用 XMLHttpRequest 對象的 open() 和 send() 方法:Open方法了有兩種請求方式——get和post

與 POST 相比,GET 更簡單也更快,並且在大部分情況下都能用。然而,在以下情況中,請使用 POST 請求:

1、無法使用緩存文件(更新服務器上的文件或數據庫)

2、向服務器發送大量數據(POST 沒有數據量限制)

3、發送包含未知字符的用戶輸入時,POST 比 GET 更穩定也更可靠

註釋:send(string)方法只有當時post請求時才會傳入參數

onreadystatechange 事件:當請求被發送到服務器時,我們需要執行一些基於響應的任務。每當 readyState 改變時,就會觸發 onreadystatechange 事件。readyState 屬性存有 XMLHttpRequest 的狀態信息。下面是 XMLHttpRequest 對象的三個重要的屬性:

屬性 描述
onreadystatechange 存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。
readyState

存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。

  • 0: 請求未初始化
  • 1: 服務器連接已建立
  • 2: 請求已接收
  • 3: 請求處理中
  • 4: 請求已完成,且響應已就緒
status

200: "OK"

404: 未找到頁面

在 onreadystatechange 事件中,我們規定當服務器響應已做好被處理的準備時所執行的任務。當 readyState 等於 4 且狀態為 200 時,表示響應已就緒:

GET請求:

<body>
    <button onclick="loadXMLDoc()">點擊發送異步請求</button>
    <script>
        function loadXMLDoc() {
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = function () {
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    alert(xmlhttp.responseText);
                }
            }
            xmlhttp.open(
"get", "person.ashx", true); xmlhttp.send(); } </script> </body>

PSOT請求:

<body>
    <button onclick="fs()">點擊發送異步請求</button>
    <script>
        var xmlHttp;
        function GetXmlHttpObject() {
            if (window.XMLHttpRequest) {
                // code for IE7+, Firefox, Chrome, Opera, Safari 
                xmlhttp = new XMLHttpRequest();
            } else {// code for IE6, IE5 
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            return xmlhttp;
        } 
        function getOkPost() {
            if (xmlHttp.readyState == 1 || xmlHttp.readyState == 2 || xmlHttp.readyState == 3) {
                // 本地提示:加載中/處理中 
            }
            if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                var d = xmlHttp.responseText; // 返回值 
                // 處理返回值 
                alert(d);
            }
        }
        function fs() {
            xmlHttp = GetXmlHttpObject();
            if (xmlHttp == null) {
                alert(‘您的瀏覽器不支持AJAX!‘);
                return;
            }
            var url = "info.ashx";
            xmlhttp.open("POST", url, true);
            xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            var data = "name=wqx&age=10"
            xmlhttp.send(data);
            xmlHttp.onreadystatechange = getOkPost;//發送事件後,收到信息了調用函數 
        }       
    </script>
</body>

參考:W3C

JS——AJAX