WIKI使用導(dǎo)航
站長(zhǎng)百科導(dǎo)航
站長(zhǎng)專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機(jī)
- cPanel
- 網(wǎng)址導(dǎo)航專題
- 云計(jì)算
- 微博營(yíng)銷
- 虛擬主機(jī)管理系統(tǒng)
- 開(kāi)放平臺(tái)
- WIKI程序與應(yīng)用
- 美國(guó)十大主機(jī)
Php-ajax基礎(chǔ)
導(dǎo)航: 上一頁(yè) | ASP | PHP | JSP | HTML | CSS | XHTML | aJAX | Ruby | JAVA | XML | Python | ColdFusion
如何學(xué)習(xí)AJAX[ ]
現(xiàn)在瀏覽器端以 JavaScript 為核心,基于各種 Web 標(biāo)準(zhǔn)(即:早已完成標(biāo)準(zhǔn)化的XHTML/CSS/DOM/XML/XSLT 和正在進(jìn)行標(biāo)準(zhǔn)化的XMLHTTP)的技術(shù)正在加速整合,Ajax 就是這一系列技術(shù)的一個(gè)統(tǒng)稱。
雖然網(wǎng)絡(luò)上已經(jīng)有大量的相關(guān)資源,但是為了打好基礎(chǔ),認(rèn)真讀上幾本書(shū)還是很有必要的。
好在 Ajax 并不是什么全新的技術(shù),它僅僅是傳統(tǒng)技術(shù)的發(fā)展和增值,是對(duì)于這些基于 Web 標(biāo)準(zhǔn)的傳統(tǒng)技術(shù)的重新包裝,使其更加適合于企業(yè)應(yīng)用,并且和服務(wù)器端結(jié)合地更加緊密。因此學(xué)習(xí) Ajax,首先就要從深入學(xué)習(xí)這些傳統(tǒng)的技術(shù)開(kāi)始。
Ajax基礎(chǔ)[ ]
通過(guò)適當(dāng)?shù)腁jax應(yīng)用達(dá)到更好的用戶體驗(yàn);
把以前的一些服務(wù)器負(fù)擔(dān)的工作轉(zhuǎn)嫁到客戶端,利于客戶端閑置的處理能力來(lái)處理,減輕服務(wù)器和帶寬的負(fù)擔(dān),從而達(dá)到節(jié)約ISP的空間及帶寬租用成本的目的。
引用
Ajax這個(gè)概念的最早提出者Jesse James Garrett認(rèn)為:Ajax是Asynchronous JavaScript and XML的縮寫。Ajax并不是一門新的語(yǔ)言或技術(shù),它實(shí)際上是幾項(xiàng)技術(shù)按一定的方式組合在一在同共的協(xié)作中發(fā)揮各自的作用,它包括:
·使用XHTML和CSS標(biāo)準(zhǔn)化呈現(xiàn);
·使用DOM實(shí)現(xiàn)動(dòng)態(tài)顯示和交互;
·使用XML和XSLT進(jìn)行數(shù)據(jù)交換與處理;
·使用XMLHttpRequest進(jìn)行異步數(shù)據(jù)讀取;
·最后用JavaScript綁定和處理所有數(shù)據(jù);
Ajax的工作原理相當(dāng)于在用戶和服務(wù)器之間加了—個(gè)中間層,使用戶操作與服務(wù)器響應(yīng)異步化。并不是所有的用戶請(qǐng)求都提交給服務(wù)器,像—些數(shù)據(jù)驗(yàn)證和數(shù)據(jù)處理等都交給Ajax引擎自己來(lái)做,只有確定需要從服務(wù)器讀取新數(shù)據(jù)時(shí)再由Ajax引擎代為向服務(wù)器提交請(qǐng)求。
雖然Garrent列出了7條Ajax的構(gòu)成技術(shù),但個(gè)人認(rèn)為,所謂的Ajax其核心只有JavaScript、XMLHTTPRequest和DOM,如果所用數(shù)據(jù)格式為XML的話,還可以再加上XML這一項(xiàng)(Ajax從服務(wù)器端返回的數(shù)據(jù)可以是XML格式,也可以是文本等其他格式)。
在舊的交互方式中,由用戶觸發(fā)一個(gè)HTTP請(qǐng)求到服務(wù)器,服務(wù)器對(duì)其進(jìn)行處理后再返回一個(gè)新的HTHL頁(yè)到客戶端,每當(dāng)服務(wù)器處理客戶端提交的請(qǐng)求時(shí),客戶都只能空閑等待,并且哪怕只是一次很小的交互、只需從服務(wù)器端得到很簡(jiǎn)單的一個(gè)數(shù)據(jù),都要返回一個(gè)完整的HTML頁(yè),而用戶每次都要浪費(fèi)時(shí)間和帶寬去重新讀取整個(gè)頁(yè)面。
而使用Ajax后用戶從感覺(jué)上幾乎所有的操作都會(huì)很快響應(yīng)沒(méi)有頁(yè)面重載(白屏)的等待。
1、XMLHTTPRequest
Ajax的一個(gè)最大的特點(diǎn)是無(wú)需刷新頁(yè)面便可向服務(wù)器傳輸或讀寫數(shù)據(jù)(又稱無(wú)刷新更新頁(yè)面),這一特點(diǎn)主要得益于XMLHTTP組件XMLHTTPRequest對(duì)象。這樣就可以向再發(fā)桌面應(yīng)用程序只同服務(wù)器進(jìn)行數(shù)據(jù)層面的交換,而不用每次都刷新界面也不用每次將數(shù)據(jù)處理的工作提交給服務(wù)器來(lái)做,這樣即減輕了服務(wù)器的負(fù)擔(dān)又加快了響應(yīng)速度、縮短了用戶等候時(shí)間。
最早應(yīng)用XMLHTTP的是微軟,IE(IE5以上)通過(guò)允許開(kāi)發(fā)人員在Web頁(yè)面內(nèi)部使用XMLHTTP ActiveX組件擴(kuò)展自身的功能,開(kāi)發(fā)人員可以不用從當(dāng)前的Web頁(yè)面導(dǎo)航而直接傳輸數(shù)據(jù)到服務(wù)器上或者從服務(wù)器取數(shù)據(jù)。這個(gè)功能是很重要的,因?yàn)樗鼛椭鷾p少了無(wú)狀態(tài)連接的痛苦,它還可以排除下載冗余HTML的需要,從而提高進(jìn)程的速度。Mozilla(Mozilla1.0以上及NetScape7以上)做出的回應(yīng)是創(chuàng)建它自己的繼承XML代理類:XMLHttpRequest類。Konqueror (和Safari v1.2,同樣也是基于KHTML的瀏覽器)也支持XMLHttpRequest對(duì)象,而Opera也將在其v7.6x+以后的版本中支持XMLHttpRequest對(duì)象。對(duì)于大多數(shù)情況,XMLHttpRequest對(duì)象和XMLHTTP組件很相似,方法和屬性也類似,只是有一小部分屬性不支持。
XMLHttpRequest的應(yīng)用:
·XMLHttpRequest對(duì)象在JS中的應(yīng)用
var xmlhttp = new XMLHttpRequest();
·微軟的XMLHTTP組件在JS中的應(yīng)用
var xmlhttp = new ActiveXObject(Microsoft.XMLHTTP);
var xmlhttp = new ActiveXObject(Msxml2.XMLHTTP);
XMLHttpRequest 對(duì)象方法
/**
- Cross-browser XMLHttpRequest instantiation.
- /
if (typeof XMLHttpRequest == ’undefined’) {
XMLHttpRequest = function () {
var msxmls = [’MSXML3’, ’MSXML2’, ’Microsoft’]
for (var i=0; i < msxmls.length; i++) {
try {
return new ActiveXObject(msxmls+’.XMLHTTP’)
} catch (e) { }
}
throw new Error("No XML component installed!")
}
}
function createXMLHttpRequest() {
try {
// Attempt to create it "the Mozilla way"
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
}
// Guess not - now the IE way
if (window.ActiveXObject) {
return new ActiveXObject(getXMLPrefix() + ".XmlHttp");
}
}
catch (ex) {}
return false;
}