get發(fā)送網(wǎng)絡(luò)請(qǐng)求的緩存機(jī)制
原因: 每次get請(qǐng)求時(shí), 若路徑相同, 瀏覽器會(huì)返回之前緩存的數(shù)據(jù), 而不是真正的發(fā)送請(qǐng)求
解決方式 : 在請(qǐng)求路徑中加上參數(shù)
1. 隨機(jī)數(shù)
2. 時(shí)間戳 date.getTime();
-
傳遞三個(gè)參數(shù): url, 成功的回調(diào), 失敗的回調(diào)
傳遞三個(gè)參數(shù)
請(qǐng)求的參數(shù)處理
- 若傳參, 則多加個(gè)參數(shù)
若傳的是對(duì)象, key值是否加""都可
var arrM = []; //數(shù)組的聲明
注意: url本身不支持中文, 部分瀏覽器默認(rèn)可以轉(zhuǎn)碼, 所以要對(duì)中文轉(zhuǎn)碼處理
url = encodeURI(url);
get請(qǐng)求超時(shí)處理
- 請(qǐng)求超時(shí): 一般來(lái)說(shuō), 在項(xiàng)目中很多請(qǐng)求都有時(shí)間限制 10s 15s
xhr.abort(); //取消網(wǎng)絡(luò)請(qǐng)求
注意點(diǎn):
因?yàn)楫惒綀?zhí)行, 所以定時(shí)器可以放在請(qǐng)求后面
若未傳參, 則要對(duì)timeOut設(shè)置一個(gè)默認(rèn)值
-
alert要放在abort后, 否則會(huì)導(dǎo)致請(qǐng)求已經(jīng)發(fā)送成功.
alert放在abort后面
只要timeOut時(shí)間后執(zhí)行里面代碼即可, 一次性的, 所以用setTimeOut
ajax發(fā)送post請(qǐng)求
-
AJAX全稱 Asynchronous JavaScript and XML
post方法發(fā)送請(qǐng)求
步驟:
1. 設(shè)置post方式
2. 所有參數(shù)要以查詢字符串的方式傳給send方法
3. 設(shè)置請(qǐng)求頭信息
注意點(diǎn): 設(shè)置Content-Type字段要在open和send方法之間.
對(duì)post請(qǐng)求進(jìn)行封裝
注意點(diǎn):
1. post請(qǐng)求沒(méi)有緩存問(wèn)題
2. 不用中文轉(zhuǎn)碼了. 一般情況下后臺(tái)開(kāi)發(fā)人員在請(qǐng)求路徑里不會(huì)寫中文, 中文一般出現(xiàn)在參數(shù)里.
php中用.拼接字符串或者變量
- $_REQUEST對(duì)象只要是網(wǎng)絡(luò)請(qǐng)求的參數(shù)都可以拿到. 可以替代$_GET 和$_POST對(duì)象
JSON
json.org 是一種輕量級(jí)的數(shù)據(jù)交換格式.
Javascript object notation
對(duì)象和json : 都是鍵值對(duì)的集合
區(qū)別
1. key值 json里的key值必須加雙引號(hào)
2. json里不能加函數(shù)
json表示數(shù)據(jù)簡(jiǎn)單, 可以和很多數(shù)據(jù)進(jìn)行兼容處理 value可以是null, array... 但是不能為undefined
對(duì)象用{}括住 數(shù)組用[]括住
參考文頂頂?shù)牟┛?http://wendingding.com/
推薦書 : javascript語(yǔ)法精粹
json在線格式化 在線解析
php文件中導(dǎo)入json文件:
file_get_contents(fileName:"");
反序列化處理
- json => js對(duì)象
兩種方式:
1. 使用json API進(jìn)行轉(zhuǎn)換(系統(tǒng)自帶)
JSON.parse();
stringify 傳參可以讓json縮進(jìn)
缺點(diǎn) 只支持ES5+
序列化處理則相反的過(guò)程.
方法二: eval();
-
把字符串轉(zhuǎn)換為js代碼, 并馬上執(zhí)行
使用eval進(jìn)行轉(zhuǎn)換 數(shù)據(jù)更小, 速度快流量小, 直觀
8:2 json:xml 使用頻率
XML格式
- 數(shù)據(jù)過(guò)濾放在后端的好處
體積小, 速度快
-
后端性能好些, 速度快
xml格式文件需要提前聲明
-
解析xml數(shù)據(jù)
解析XML數(shù)據(jù)的方式 不能用innerTEXT方法, 否則不讀取
innerHTML和innerText在處理標(biāo)記文檔的方式上有細(xì)微不同 ...待補(bǔ)充