Ajax知識點;
AJAX是一種用于創建快速動態網頁的技術;
從后臺提取數據利用創建動態節點,把后臺數據展示在頁面中。
Ajax技術的核心是XMLHttpRequest對象(簡稱XHR),可以通過使用XHR對象獲取到服務器的數據,然后再通過DOM將數據插入到頁面中呈現。雖然名字中包含XML,但Ajax通訊與數據格式無關,所以我們的數據格式可以是XML或JSON等格式。
XMLHttpRequest對象用于在后臺與服務器交換數據,具體作用如下:
在不重新加載頁面的情況下更新網頁
在頁面已加載后從服務器請求數據
在頁面已加載后從服務器接收數據
在后臺向服務器發送數據
來源: http://kb.cnblogs.com/page/150964/
通過在后臺與服務器進行少量的數據交換,Ajax可以使網頁實現異步更新(不重新加載頁面的情況下更新網頁)
XMLHttpRequest對象;
創建XHR對象:
var XHR = new XMLHttpRequest();
兼容瀏覽器
var xhr;
//1.2根據標準的瀏覽器是否支持標準的創建方法來創建對象
//先判斷瀏覽器是否具備XMLHttpRequest()方法;
if(window.XMLHttpRequest){
//有,表示當前是標準瀏覽器;
xhr = new XMLHttpRequest(); // 支持IE8,9;w3c標準。
}else{
//無,表示不是標準瀏覽器, 是IE5,6,7;
//在IE5,6,7這些老版的瀏覽器中,Ajax組件是放在ActiveXObject組件庫中的,需要傳入Micrsoft.XMLHTTP 這個參數才能返回出這個組件。
xhr = new ActiveXObject('Micrsoft.XMLHTTP');
}
創建的XHR對象
在使用XHR對象時,要調用的第一個方法時open();三個參數:
發送請求的類型?:post or get;
請求的URL;
表示是否異步發送請求的布爾值;
<script type="text/javascript">
//1創建Ajax對象
//1.1 定義變量 用來保存創建出的對象(XMLHttpRequest這個對象);
var xhr;
//1.2根據標準的瀏覽器是否支持標準的創建方法來創建對象
//判斷瀏覽器是否具備XMLHttpRequest()方法;
if(window.XMLHttpRequest){
//有,表示當前是標準瀏覽器;
xhr = new XMLHttpRequest(); // 支持IE8,9;w3c標準。
}else{
//無,表示不是標準瀏覽器, 是IE5,6,7;
//在IE5,6,7這些老版的瀏覽器中,Ajax組件是放在ActiveXObject組件庫中的,需要傳入Micrsoft.XMLHTTP 這個參數才能返回出這個組件。
xhr = new ActiveXObject('Micrsoft.XMLHTTP');
}
//2 配置請求信息
/*
open函數中的三個參數
1 設置請求方式 GET , POST;
2 設置請求的數據接口地址;
3 設置請求是否是異步請求(異步請求當請求發送出去后,不在等待請求的數據而是先執行其他任務,當數據到達本地后再處理,默認請求時異步;)
*/
// xhr.open("POST","JSON.html",true);
/*GET請求
如果有參數,則把請求參數直接拼接在url之后;
*/
xhr.open('GET','JSON.html',true);
/*
3 發送請求:
GET 請求send()參數可以不寫,最好在send(null)參數中寫上null;
*/
xhr.send();
/*POST參數問題
把post請求所需要的參數放在send方法中
*/
// xhr.send('user='+encodeURI('張三')+'&password=1234567');
// post請求參數中如果有中文字符,則需要對中文符號進行編碼操作 轉成unicode編碼
// $tempInfo_post(); php中接受post的請求參數
/*
4 監聽數據傳輸情況:
*/
xhr.onreadystatechange = function(){
// console.log(xhr.readystate);
if(xhr.readystate == 4 && xhr.status ==200){
console.log('拿到數據');
}
}
xhr.status = 200;
</script>
避免緩存問題:
Paste_Image.png
JSON:
json是一個輕量級的數據格式,可以簡化表示復雜數據結構的工作量,JSON使用javascript語法的子集表示對象,數組。字符串,數值,布爾值及null;即使XML也能表示同樣的復雜數據結果,但是JSON沒有那么多的繁瑣,而且在javascript中使用很便利;
ECMAScript5 定義了一個原生的JSON隊形,可以用來將對象序列化為JSON字符轉或者將JSON數據解析為Javascript對象,JSON.stringify()和JSON.parse()方法分別用來實現上面的兩個功能,這兩個方法都設有一些選項,通過他們可以改變過濾的方式,或者 改變序列變化的過程;
Paste_Image.png