AJAX

AJAX 是一種在無需重新加載整個網(wǎng)頁的情況下句占,能夠更新部分網(wǎng)頁的技術(shù)。
什么是 AJAX ?
AJAX = 異步 JavaScript 和 XML畦粮。
AJAX 是一種用于創(chuàng)建快速動態(tài)網(wǎng)頁的技術(shù)露泊。
通過在后臺與服務器進行少量數(shù)據(jù)交換喉镰,AJAX 可以使網(wǎng)頁實現(xiàn)異步更新。這意味著可以在不重新加載整個網(wǎng)頁的情況下惭笑,對網(wǎng)頁的某部分進行更新侣姆。
XMLHttpRequest 是 AJAX 的基礎(chǔ) , XMLHttpRequest 對象用于和服務器交換數(shù)據(jù)。
如需將請求發(fā)送到服務器沉噩,我們使用 XMLHttpRequest 對象的 open() 和 send() 方法:
xmlhttp.open("GET","test1.txt",true);
xmlhttp.send();

使用方法

GET 還是 POST捺宗?
與 POST 相比,GET 更簡單也更快川蒙,并且在大部分情況下都能用蚜厉。
然而,在以下情況中畜眨,請使用 POST 請求:

  • 無法使用緩存文件(更新服務器上的文件或數(shù)據(jù)庫)
  • 向服務器發(fā)送大量數(shù)據(jù)(POST 沒有數(shù)據(jù)量限制)
  • 發(fā)送包含未知字符的用戶輸入時弯囊,POST 比 GET 更穩(wěn)定也更可靠

如果需要像 HTML 表單那樣 POST 數(shù)據(jù)痰哨,請使用 setRequestHeader() 來添加 HTTP 頭。然后在 send() 方法中規(guī)定您希望發(fā)送的數(shù)據(jù):

Paste_Image.png

url - 服務器上的文件
open() 方法的 url 參數(shù)是服務器上文件的地址:
xmlhttp.open("GET","ajax_test.asp",true);
該文件可以是任何類型的文件匾嘱,比如 .txt 和 .xml斤斧,或者服務器腳本文件,比如 .asp 和 .php (在傳回響應之前霎烙,能夠在服務器上執(zhí)行任務)撬讽。
異步 - True 或 False?
AJAX 指的是異步 JavaScript 和 XML(Asynchronous JavaScript and XML)悬垃。
XMLHttpRequest 對象如果要用于 AJAX 的話游昼,其 open() 方法的 async 參數(shù)必須設(shè)置為 true:
xmlhttp.open("GET","ajax_test.asp",true);
對于 web 開發(fā)人員來說,發(fā)送異步請求是一個巨大的進步尝蠕。很多在服務器執(zhí)行的任務都相當費時烘豌。AJAX 出現(xiàn)之前,這可能會引起應用程序掛起或停止看彼。
通過 AJAX廊佩,JavaScript 無需等待服務器的響應,而是:

  • 在等待服務器響應時執(zhí)行其他腳本
  • 當響應就緒后對響應進行處理

Async = true
當使用 async=true 時靖榕,請規(guī)定在響應處于 onreadystatechange 事件中的就緒狀態(tài)時執(zhí)行的函數(shù):
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","test1.txt",true);
xmlhttp.send();
服務器響應
如需獲得來自服務器的響應标锄,請使用 XMLHttpRequest 對象的 responseText( 獲得字符串形式的響應數(shù)據(jù) ) 或 responseXML 屬性( 獲得 XML 形式的響應數(shù)據(jù) )。
responseText 屬性
如果來自服務器的響應并非 XML茁计,請使用 responseText 屬性料皇。
responseText 屬性返回字符串形式的響應,因此可以這樣使用:
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
responseXML 屬性
如果來自服務器的響應是 XML星压,而且需要作為 XML 對象進行解析践剂,請使用 responseXML 屬性:
xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
{
txt=txt + x[i].childNodes[0].nodeValue + "<br />";
}
document.getElementById("myDiv").innerHTML=txt;
onreadystatechange 事件
當請求被發(fā)送到服務器時,我們需要執(zhí)行一些基于響應的任務娜膘。
每當 readyState 改變時逊脯,就會觸發(fā) onreadystatechange 事件。
readyState 屬性存有 XMLHttpRequest 的狀態(tài)信息劲绪。
下面是 XMLHttpRequest 對象的三個重要的屬性:
onreadystatechange -- 存儲函數(shù)(或函數(shù)名)男窟,每當 readyState 屬性改變時,就會調(diào)用該函數(shù)贾富。
readyState -- 存有 XMLHttpRequest 的狀態(tài)歉眷。從 0 到 4 發(fā)生變化。
0.請求未初始化
1.服務器連接已建立
2.請求已接收
3.請求處理中
4.請求已完成颤枪,且響應已就緒
status -- 200: "OK" ; 404: 未找到頁面
在 onreadystatechange 事件中汗捡,我們規(guī)定當服務器響應已做好被處理的準備時所執(zhí)行的任務。
當 readyState 等于 4 且狀態(tài)為 200 時,表示響應已就緒:
xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } }
注釋:onreadystatechange 事件被觸發(fā) 5 次(0 - 4)扇住,對應著 readyState 的每個變化春缕。
使用 Callback 函數(shù)
callback 函數(shù)是一種以參數(shù)形式傳遞給另一個函數(shù)的函數(shù)。
如果您的網(wǎng)站上存在多個 AJAX 任務艘蹋,那么應該為創(chuàng)建 XMLHttpRequest 對象編寫一個標準的函數(shù)锄贼,并為每個 AJAX 任務調(diào)用該函數(shù)。
該函數(shù)調(diào)用應該包含 URL 以及發(fā)生 onreadystatechange 事件時執(zhí)行的任務(每次調(diào)用可能不盡相同):
function myFunction({
loadXMLDoc("ajax_info.txt",function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
});
}
AJAX 用于創(chuàng)造動態(tài)性更強的應用程序女阀。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宅荤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子浸策,更是在濱河造成了極大的恐慌冯键,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庸汗,死亡現(xiàn)場離奇詭異惫确,居然都是意外死亡,警方通過查閱死者的電腦和手機蚯舱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門改化,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人晓淀,你說我怎么就攤上這事所袁≌档担” “怎么了凶掰?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蜈亩。 經(jīng)常有香客問我懦窘,道長,這世上最難降的妖魔是什么稚配? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任畅涂,我火速辦了婚禮,結(jié)果婚禮上道川,老公的妹妹穿的比我還像新娘午衰。我一直安慰自己,他們只是感情好冒萄,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布臊岸。 她就那樣靜靜地躺著,像睡著了一般尊流。 火紅的嫁衣襯著肌膚如雪帅戒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天崖技,我揣著相機與錄音逻住,去河邊找鬼钟哥。 笑死,一個胖子當著我的面吹牛瞎访,可吹牛的內(nèi)容都是我干的腻贰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼扒秸,長吁一口氣:“原來是場噩夢啊……” “哼银受!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤桑孩,失蹤者是張志新(化名)和其女友劉穎剩拢,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顶霞,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年锣吼,在試婚紗的時候發(fā)現(xiàn)自己被綠了选浑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡玄叠,死狀恐怖古徒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情读恃,我是刑警寧澤隧膘,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站寺惫,受9級特大地震影響疹吃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜西雀,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一萨驶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧艇肴,春花似錦腔呜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至帮哈,卻和暖如春膛檀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工咖刃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泳炉,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓嚎杨,卻偏偏與公主長得像花鹅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子枫浙,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1刨肃、ajax技術(shù)的背景 不可否認,ajax技術(shù)的流行得益于google的大力推廣箩帚,正是由于google earth...
    raincoco閱讀 419評論 0 4
  • AJAX = Asynchronous JavaScript and XML(異步的 JavaScript 和 X...
    hx永恒之戀閱讀 6,884評論 7 135
  • AJAX 原生js操作ajax 1.創(chuàng)建XMLHttpRequest對象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,201評論 0 7
  • 本文介紹了Ajax最基礎(chǔ)的操作和概念真友,希望能幫助大家初步認識Ajax 1.基本概念 AJAX = Asynchro...
    阿r阿r閱讀 2,770評論 2 30
  • AJAX 簡介 AJAX 是一種在無需重新加載整個網(wǎng)頁的情況下,能夠更新部分網(wǎng)頁的技術(shù)紧帕。 什么是 AJAX 盔然? A...
    孤傭閱讀 662評論 0 6