色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

Ajax與JSON的一些總結(jié)

  1.1.1 摘要

  Ajax技術(shù)的核心是XMLHttpRequest對(duì)象(簡稱XHR),可以通過使用XHR對(duì)象獲取到服務(wù)器的數(shù)據(jù),然后再通過DOM將數(shù)據(jù)插入到頁面中呈現(xiàn)。雖然名字中包含XML,但Ajax通訊與數(shù)據(jù)格式無關(guān),所以我們的數(shù)據(jù)格式可以是XML或JSON等格式。

  XMLHttpRequest對(duì)象用于在后臺(tái)與服務(wù)器交換數(shù)據(jù),具體作用如下:

  • 在不重新加載頁面的情況下更新網(wǎng)頁
  • 在頁面已加載后從服務(wù)器請(qǐng)求數(shù)據(jù)
  • 在頁面已加載后從服務(wù)器接收數(shù)據(jù)
  • 在后臺(tái)向服務(wù)器發(fā)送數(shù)據(jù)

  本文目錄

  1.1.2 正文

  XMLHttpRequest是一個(gè)JavaScript對(duì)象,它是由微軟設(shè)計(jì),并且被Mozilla、Apple和Google采納,W3C正在標(biāo)準(zhǔn)化它。它提供了一種簡單的方法來檢索URL中的數(shù)據(jù)。

  我們要?jiǎng)?chuàng)建一個(gè)XMLHttpRequest實(shí)例,只需new一個(gè)就OK了:

//// Creates a XMLHttpRequest object.var req = new XMLHttpRequest();

  也許有人會(huì)說:“這可不行啊!IE6不支持原始的XHR對(duì)象”,確實(shí)是這樣,我們?cè)诤竺鎸?huì)介紹支持IE6或更老版本創(chuàng)建XHR對(duì)象的方法。

  XMLHttpRequest的用法

  在創(chuàng)建XHR對(duì)象后,接著我們要調(diào)用一個(gè)初始化方法open(),它接受五個(gè)參數(shù)具體定義如下:

void open(   DOMString method, //"GET", "POST", "PUT", "DELETE"   DOMString url,   optional boolean async,   optional DOMString user,   optional DOMString password);

  通過上面的定義我們知道open()方法的簽名包含五個(gè)參數(shù),其中有參數(shù)method和url地址是必填的,假設(shè)我們針對(duì)URL: myxhrtest.ASPx發(fā)送GET請(qǐng)求獲取數(shù)據(jù),具體定義如下:

var req = new XMLHttpRequest();req.open(    "GET",    "myxhrtest.ASPx",    false);

  通過上述代碼會(huì)啟動(dòng)一個(gè)針對(duì)myxhrtest.ASPx的GET請(qǐng)求,這里有兩點(diǎn)要注意:一是URL相對(duì)于執(zhí)行代碼的當(dāng)前頁面(使用絕對(duì)路徑);二是調(diào)用open()方法并不會(huì)真正發(fā)送請(qǐng)求,而只是啟動(dòng)一個(gè)請(qǐng)求準(zhǔn)備發(fā)送。

只能向同一個(gè)域中使用相同端口和協(xié)議的URL中發(fā)送請(qǐng)求;如果URL與啟動(dòng)請(qǐng)求的頁面有任何差別,都會(huì)引發(fā)安全錯(cuò)誤。

  要真正發(fā)送請(qǐng)求要使用send()方法,send()方法接受一個(gè)參數(shù),即要作為請(qǐng)求主體發(fā)送的數(shù)據(jù),如果不需要通過請(qǐng)求主體發(fā)送數(shù)據(jù),我們必須傳遞一個(gè)null值。在調(diào)用send()之后,請(qǐng)求就會(huì)被分派到服務(wù)器,完整Ajax請(qǐng)求代碼如下:

var req = new XMLHttpRequest();req.open(    "GET",    "myxhrtest.ASPx",    false);req.send(null);

  在發(fā)送請(qǐng)求之后,我們需要檢查請(qǐng)求是否執(zhí)行成功,首先可以通過status屬性判斷,一般來說,可以將HTTP狀態(tài)代碼為200作為成功標(biāo)志。這時(shí),響應(yīng)主體內(nèi)容會(huì)保存到responseText中。此外,狀態(tài)代碼為304表示請(qǐng)求的資源并沒有被修改,可以直接使用瀏覽器緩存的數(shù)據(jù),Ajax的同步請(qǐng)求代碼如下:

if (req != null) {        req.onreadystatechange = function() {            if ((req.status >= 200 && req.status < 300) || req.status == 304) {                //// Do something.            } else {                alert("Request was unsuccessful: " + req.status);            }    };    req.open("GET", "www.myxhrtest.ASPx", true);    req.send(null);}

  前面我們定義了Ajax的同步請(qǐng)求,如果我們發(fā)送異步請(qǐng)求,那么在請(qǐng)求過程中Javascript代碼會(huì)繼續(xù)執(zhí)行,這時(shí)可以通過readyState屬性判斷請(qǐng)求的狀態(tài),當(dāng)readyState = 4時(shí),表示收到全部響應(yīng)數(shù)據(jù),屬性值的定義如下:

readyState值

描述

0

未初始化;尚未調(diào)用open()方法

1

啟動(dòng);尚未調(diào)用send()方法

2

已發(fā)送;但尚未收到響應(yīng)

3

接收;已經(jīng)收到部分響應(yīng)數(shù)據(jù)

4

完成;收到全部響應(yīng)數(shù)據(jù)

it知識(shí)庫Ajax與JSON的一些總結(jié),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 滨州市| 巴楚县| 阿城市| 修水县| 张掖市| 社旗县| 绥棱县| 绩溪县| 陇西县| 大荔县| 渝中区| 龙胜| 奉化市| 安吉县| 左权县| 镇沅| 昌宁县| 韶关市| 宜兴市| 阜平县| 平南县| 招远市| 沙湾县| 平度市| 平山县| 余江县| 乾安县| 平果县| 滦南县| 阿尔山市| 汾西县| 手游| 鄱阳县| 黄梅县| 孝感市| 南岸区| 汤阴县| 永福县| 丰城市| 大连市| 措美县|