1.readyState屬性
狀態:0 代表未初始化。
1 代表准備發送。
2 已發送但還沒收到響應
3 正在接收
4 接收完成
2.responseText屬性
包含客戶端接收到的HTTP響應的文本內容。
當readyState=4時,responseText才包含完整的響應信息。
當readyState=3時,responseText包含未完整的響應信息。
當readyState<3時,responseText為空字符串。
當readyState=4,並且響應頭部的Content-Type的MIME類型為XML(text/xml或application/xml)時,該屬性有值並且被解析成一個XML文檔。
其它情況為null,包括回傳的XML文檔不良或未完成響應回傳。
status==200 表示訪問服務器成功;
statusText 是從服務器獲取的文本信息;
當readyState>2,才能訪問,否則出現異常。
5.onreadystatechange事件
當readyState屬性發生變化時觸發此事件,用於觸發回調函數。
open(method, uri, async, username, password) 用來進行初始化工作
返回值:得到一個包含send()方法的對象
method:必須。用於指定HTTP方法如GET,POST,PUT....。按規定必須大寫。
uri:請求發送到服務器相應的URI.自動解析成絕對地址。
async:請求是否異步,默認為true.
調用open后,readystate狀態為1.
調用open 方法后,可以調用send()方法來發送請求。
當open 中async=true時,send()方法調用后立即返回,否則會中斷直到請求返回。
send(data)
data:可選。此處還有疑問。。
該方法可以暫停一個HttpRequest請求或者HttpResponse的接收,並且將XMLHttpRequest的狀態設置為初始化。
該方法用來設置請求的頭部信息。在調用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'=>'接收成功']);