Ajax:異步交互傳輸技術 ----就是用來與後臺交互數據用的php
GET請求方式:經過URL地址傳遞,其傳輸數據也在URL地址中 ,通常是以字符串形式傳遞接收,安全性相對不過高後端
POST請求方式:經過瀏覽器內部傳輸,通常在send()方法前面要添加頭文件即setRequestHeader(),數據由send()方法藉由參數形式傳遞,傳遞數據格式多,安全性相對高點數組
發送請求(get和post的區別):瀏覽器
send(要發送的數據):發送請求
中文編碼
緩存
POST:setRequestHeader(類型, 內容):設置請求頭
"Content-Type","application/x-www-form-urlencoded」
緩存
數據類型(返回數據的處理):
服務器返回給我們的真正數據
XML、HTML、JSON
JSON的寫法
Eval解析JSON的時候須要注意的地方
JSON.parse() : 字符串解析成對象
安全
後端數據的接收:
$_GET
- 經過URL傳遞給該腳本的變量的數組
$_POST
- 經過HTTP POST方法(表單)傳遞給該腳本的變量的數組
先後臺鍵名和傳輸方式必須一致
數據傳輸方式
數據獲取方式
服務器
var xhr = null;
try {
xhr = new XMLHttpRequest();
} catch (e) {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
xhr.open('post','2.post.php',true);
//post方式,數據放在send()裏面做爲參數傳遞
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');//申明發送的數據類型
//post沒有緩存問題
//無需編碼
xhr.send('username=劉偉&age=30');
xhr.onreadystatechange = function() {
if ( xhr.readyState == 4 ) {
if ( xhr.status == 200 ) {
alert( xhr.responseText );
} else {
alert('出錯了,Err:' + xhr.status);
}
}
}app
get緩存問題:dom
來源:每次都是發送同一個URL地址,發送訪問請求後,會有一個緩存,以後仍是一樣的一個URL地址,這時候,瀏覽器就會直接去讀取緩存,不會再向服務器發送請求異步
解決方法:‘2.get.php?username=leo&age=30&’+new Date().getTime();或者加個Math.random()隨機函數;在URL問號後面鏈接一個隨機數時間戳
get傳輸中文有亂碼問題: URL中傳輸數據,使用編碼 encodeURL ‘2.get.php?username='+encodeURI('劉偉')+'&age=30&’+new Date().getTime();
post方式:
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');聲明數據發送的數據類型
post方式,數據放在send()裏面做爲參數傳遞
沒有中文亂碼問題,由於在請求頭中已經告訴後臺的格式了