Ajax對象XMLHttpRequest對象的屬性和方法詳解


XMLHttpRequest對象的屬性和方法
首先XMLHttpRequest 對象用於在后台與服務器交換數據。

1.readyState屬性

狀態:0 代表未初始化。

1 代表准備發送。

2 已發送但還沒收到響應

3 正在接收

4 接收完成

2.responseText屬性

包含客戶端接收到的HTTP響應的文本內容。

當readyState=4時,responseText才包含完整的響應信息。

當readyState=3時,responseText包含未完整的響應信息。

當readyState<3時,responseText為空字符串。

 

3.responseXML屬性

當readyState=4,並且響應頭部的Content-Type的MIME類型為XML(text/xml或application/xml)時,該屬性有值並且被解析成一個XML文檔。

其它情況為null,包括回傳的XML文檔不良或未完成響應回傳。

 

4.status及statusText屬性(描述http狀態代碼,及代碼文本)

status==200 表示訪問服務器成功;

statusText 是從服務器獲取的文本信息;

當readyState>2,才能訪問,否則出現異常。

5.onreadystatechange事件

當readyState屬性發生變化時觸發此事件,用於觸發回調函數。

 

6.open方法

open(method, uri, async, username, password) 用來進行初始化工作

返回值:得到一個包含send()方法的對象

method:必須。用於指定HTTP方法如GET,POST,PUT....。按規定必須大寫。

uri:請求發送到服務器相應的URI.自動解析成絕對地址。

async:請求是否異步,默認為true.

調用open后,readystate狀態為1.

 

7.send方法

調用open 方法后,可以調用send()方法來發送請求。

當open 中async=true時,send()方法調用后立即返回,否則會中斷直到請求返回。

send(data)

data:可選。此處還有疑問。。

 

8.abort()方法

該方法可以暫停一個HttpRequest請求或者HttpResponse的接收,並且將XMLHttpRequest的狀態設置為初始化。

 

 

9.setRequestHeader(header,value)方法

該方法用來設置請求的頭部信息。在調用open()后調用這個方法。否則將得到一個異常。

10.getResponseHeader()方法

當readystate>2時,該方法用來檢索響應的頭部信息。否則返回一個空字符串。

getAllResponseHeaders()方法返回所有的HttpResponse頭部信息。

 

11.onreadystatechange 是一個事件句柄.

它的值 (state_Change) 是一個函數的名稱,當 XMLHttpRequest 對象的狀態發生改變時,會觸發此函數。狀態從 0 (uninitialized) 到 4 (complete) 進行變化。僅在狀態為 4 時,我們才執行代碼。

XMLHttpRequest對象簡單實例:

新建一個Ajax.html文件,代碼如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Ajax</title>
  </head>
  <body>
    <script>
    // 1建立Ajax對象
    var xhr = new XMLHttpRequest();
    // 2創建請求
    xhr.open('post','test.php');
    // 3post發送 post請求必須設置請求頭 固定,記住就好
    xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
    xhr.send('username=張三&password=123');
    // 4接收服務器返回的數據
    xhr.onreadystatechange = function(data){
      // console.log(xhr.readyState);
      if (xhr.readyState == 4 && xhr.status == 200) {
        // console.log(xhr.responseText);
        // 通過responseText獲取服務器返回的數
        var oDiv =document.createElement('div');
        oDiv.innerHTML = xhr.responseText;
        document.body.appendChild(oDiv);
      }
    }

    </script>
  </body>
</html>

同級目錄下建test.php:

<?php

$username = $_POST['username'];
$password = $_POST['password'];
file_put_contents('log.txt', $username.'---'.$password);
echo file_get_contents('log.txt');
var_dump($username);
echo json_encode(['success'=>1,'msg'=>'接收成功']);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM