亚洲乱码卡一卡二卡三永久-亚洲乱码一二三四区-亚洲乱码一区二区三区在线观看-亚洲伦理一区-成人在色线视频在线观看免费大全-成人在线91

什么是 AJAX?

AJAX (異步 JavaScript 和 XML) 是個新產生的術語,專為描述JavaScript的兩項強大性能.這兩項性

能在多年來一直被網絡開發者所忽略,直到最近Gmail, Google suggest和google Maps的橫空出世才使人

們開始意識到其重要性.

這兩項被忽視的性能是:

* 無需重新裝載整個頁面便能向服務器發送請求.

* 對XML文檔的解析和處理.

步驟 1 – "請!" --- 如何發送一個HTTP請求

 

為了用JavaScript向服務器發送一個HTTP請求, 需要一個具備這種功能的類實例.

這樣的類首先由Internet Explorer以ActiveX對象引入, 被稱為XMLHTTP. 后來Mozilla, Safari 和其他

瀏覽器紛紛仿效, 提供了XMLHttpRequest類,它支持微軟的ActiveX對象所提供的方法和屬性.

因此, 為了創建一個跨瀏覽器的這樣的類實例(對象), 可以應用如下代碼:

if (window.XMLHttpRequest) { // Mozilla, Safari, ...

http_request = new XMLHttpRequest();

} else if (window.ActiveXObject) { // IE

http_request = new ActiveXObject("Microsoft.XMLHTTP");

}

(上例對代碼做了一定簡化,這是為了解釋如何創建XMLHTTP類實例.

實際的代碼實例可參閱本篇步驟3.)

如果服務器的響應沒有XML mime-type header,某些Mozilla瀏覽器可能無法正常工作. 為了解決這個

問題, 如果服務器響應的header不是text/xml,可以調用其它方法修改該header.

http_request = new XMLHttpRequest();

http_request.overrideMimeType('text/xml');

接下來要決定當收到服務器的響應后,需要做什么.這需要告訴HTTP請求對象用哪一個JavaScript函數

處理這個響應.可以將對象的onreadystatechange屬性設置為要使用的JavaScript的函數名,如下所示:

http_request.onreadystatechange = nameOfTheFunction;

注意:在函數名后沒有括號,也無需傳遞參數.另外還有一種方法,可以在扉頁(fly)中定義函數及其對

響應要采取的行為,如下所示:

http_request.onreadystatechange = function(){

// do the thing

};

在定義了如何處理響應后,就要發送請求了.可以調用HTTP請求類的open()和send()方法, 如下所示:

http_request.open('GET', 'http://www.example.org/some.file', true);

http_request.send(null);

* open()的第一個參數是HTTP請求方式 – GET, POST, HEAD 或任何服務器所支持的您想調用的方式

. 按照HTTP規范,該參數要大寫;否則,某些瀏覽器(如Firefox)可能無法處理請求.有關HTTP請求方法的詳

細信息可參考http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html W3C specs

* 第二個參數是請求頁面的URL.由于自身安全特性的限制,該頁面不能為第三方域名的頁面.同時一定

要保證在所有的頁面中都使用準確的域名,否則調用open()會得到"permission denied"的錯誤提示.一個

常見的錯誤是訪問站點時使用domain.tld,而當請求頁面時,卻使用www.domain.tld.

* 第三個參數設置請求是否為異步模式.如果是TRUE, JavaScript函數將繼續執行,而不等待服務器響

應.這就是"AJAX"中的"A".

如果第一個參數是"POST",send()方法的參數可以是任何想送給服務器的數據. 這時數據要以字符串

的形式送給服務器,如下所示:

name=value&anothername=othervalue&so=on

步驟 2 – "收到!" --- 處理服務器的響應

當發送請求時,要提供指定處理響應的JavaScript函數名.

http_request.onreadystatechange = nameOfTheFunction;

我們來看看這個函數的功能是什么.首先函數會檢查請求的狀態.如果狀態值是4,就意味著一個完整的

服務器響應已經收到了,您將可以處理該響應.

if (http_request.readyState == 4) {

// everything is good, the response is received

} else {

// still not ready

}

readyState的取值如下:

* 0 (未初始化)

* 1 (正在裝載)

* 2 (裝載完畢)

* 3 (交互中)

* 4 (完成)

(Source)

接著,函數會檢查HTTP服務器響應的狀態值. 完整的狀態取值可參見 W3C site. 我們著重看值為200

OK的響應.

if (http_request.status == 200) {

// perfect!

} else {

// there was a problem with the request,

// for example the response may be a 404 (Not Found)

// or 500 (Internal Server Error) response codes

}

在檢查完請求的狀態值和響應的HTTP狀態值后, 您就可以處理從服務器得到的數據了.有兩種方式可

以得到這些數據:

* http_request.responseText – 以文本字符串的方式返回服務器的響應

* http_request.responseXML –

以XMLDocument對象方式返回響應.處理XMLDocument對象可以用JavaScript DOM函數

步驟 3 – "萬事俱備!" - 簡單實例

我們現在將整個過程完整地做一次,發送一個簡單的HTTP請求. 我們用JavaScript請求一個HTML文件,

test.html, 文件的文本內容為"I'm a test.".然后我們"alert()"test.html文件的內容.

style="cursor: pointer; text-decoration: underline"

onclick="makeRequest('test.html')">

Make a request

本例中:

* 用戶點擊瀏覽器上的"請求"鏈接;

* 接著函數makeRequest()將被調用.其參數 – HTML文件test.html在同一目錄下;

* 這樣就發起了一個請求.onreadystatechange的執行結果會被傳送給alertContents();

* alertContents()將檢查服務器的響應是否成功地收到,如果是,就會"alert()"test.html文件的內

容.

步驟 4 – "X-文檔" --- 處理XML響應

在前面的例子中,當服務器對HTTP請求的響應被收到后,我們會調用請求對象的reponseText屬性.該屬

性包含了test.html文件的內容.現在我們來試試responseXML屬性.

首先,我們新建一個有效的XML文件,后面我們將使用這個文件.該文件(test.xml)源代碼如下所示:

I'm a test.

在該腳本中,我們只需修改請求部分:

...

onclick="makeRequest('test.xml')">

...

接著,在alertContents()中,我們將alert()的代碼alert(http_request.responseText);換成:

var xmldoc = http_request.responseXML;

var root_node = xmldoc.getElementsByTagName('root').item(0);

alert(root_node.firstChild.data);

這里,我們使用了responseXML提供的XMLDocument對象并用DOM方法獲取存于XML文件中的內容.

穩定

產品高可用性高并發

貼心

項目群及時溝通

專業

產品經理1v1支持

快速

MVP模式小步快跑

承諾

我們選擇聲譽

堅持

10年專注高端品質開發
  • 返回頂部
主站蜘蛛池模板: 亚洲国产成人久久77 | a丫久久久久久一级毛片 | 日韩伦理剧在线观看 | 久久久久久久性高清毛片 | 一区二区视频在线播放 | 黄污视频在线 | 波多野结衣99 | 日韩一区二区三区在线视频 | 午夜视频在线观看免费视频 | 免费日韩精品 | 亚洲最新在线 | 亚洲 午夜在线一区 | 国产在线成人一区二区 | 免费黄色在线网址 | h片免费在线观看 | 精品国产片 | 成年人免费在线视频网站 | 中文精品久久久久中文 | 美女黄色毛片 | 一级黄色大片免费 | 日b视频在线观看 | 91视频站 | 最新日韩伦理片免费 | 特级全黄一级毛片视频 | 一本大道道无香蕉综合在线 | 天天插天天射天天操 | 18在线观看的 | 亚洲一二三区在线观看 | 成人欧美s视频在线观看 | v天堂在线| 欧美片欧美日韩国产综合片 | 女人特黄大aaaaaa大片 | 狠狠干老司机 | 久久亚洲国产最新网站 | 免费一级a毛片在线播 | 日本高清在线观看天码888 | 欧美整片sss | 欧美一区二区视频高清转区 | 免费看黄色毛片 | 亚洲阿v天堂最新版2021 | 伊人精品在线观看 |