Ajax 框架學(xué)習(xí)筆記
一.XMLHttpRequest 對(duì)象的三個(gè)重要的屬性。
onreadystatechange 屬性
onreadystatechange 屬性存有處理服務(wù)器響應(yīng)的函數(shù)。下面的代碼定義一個(gè)空的函數(shù),可同時(shí)對(duì) onreadystatechange 屬性進(jìn)行設(shè)置:
xmlHttp.onreadystatechange=function()
{
// 我們需要在這里寫一些代碼
}
readyState 屬性
readyState 屬性存有服務(wù)器響應(yīng)的狀態(tài)信息。每當(dāng) readyState 改變時(shí),onreadystatechange 函數(shù)就會(huì)被執(zhí)行。
這是 readyState 屬性可能的值:
|
狀態(tài) |
描述 |
|
0 |
請(qǐng)求未初始化(在調(diào)用 open() 之前) |
|
1 |
請(qǐng)求已提出(調(diào)用 send() 之前) |
|
2 |
請(qǐng)求已發(fā)送(這里通??梢詮捻憫?yīng)得到內(nèi)容頭部) |
|
3 |
請(qǐng)求處理中(響應(yīng)中通常有部分?jǐn)?shù)據(jù)可用,但是服務(wù)器還沒(méi)有完成響應(yīng)) |
|
4 |
請(qǐng)求已完成(可以訪問(wèn)服務(wù)器響應(yīng)并使用它) |
我們要向這個(gè) onreadystatechange 函數(shù)添加一條 If 語(yǔ)句,來(lái)測(cè)試我們的響應(yīng)是否已完成(意味著可獲得數(shù)據(jù)):
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
// 從服務(wù)器的response獲得數(shù)據(jù)
}
}
responseText 屬性
可以通過(guò) responseText 屬性來(lái)取回由服務(wù)器返回的數(shù)據(jù)。
二.基本源碼:
var xmlHttp
function showCustomer(str)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("Your browser does not support AJAX!");
return;
}
//設(shè)置請(qǐng)求響應(yīng)的url
var url="getcustomer_xml.asp";
url=url+"?q="+str;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function stateChanged()
{
if (xmlHttp.readyState==4)
{
//responseText 以字符串返回 HTTP 響應(yīng)
//document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
//responseXML 以 XML 返回響應(yīng)
//服務(wù)器端ContentType 屬性為 response 對(duì)象設(shè)置了 HTTP 內(nèi)容類型。該屬性的默認(rèn)值是 "text/html"。服務(wù)器端返回responseXML 要把內(nèi)容類型設(shè)置為 XML。
var xmlDoc=xmlHttp.responseXML.documentElement;
document.getElementById("companyname").innerHTML=
xmlDoc.getElementsByTagName("compname")[0].childNodes[0].nodeValue;
document.getElementById("contactname").innerHTML=
xmlDoc.getElementsByTagName("contname")[0].childNodes[0].nodeValue;
document.getElementById("address").innerHTML=
xmlDoc.getElementsByTagName("address")[0].childNodes[0].nodeValue;
document.getElementById("city").innerHTML=
xmlDoc.getElementsByTagName("city")[0].childNodes[0].nodeValue;
document.getElementById("country").innerHTML=
xmlDoc.getElementsByTagName("country")[0].childNodes[0].nodeValue;
}
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
三.Ajax框架:基于瀏覽器的應(yīng)用框架,基于服務(wù)器端的應(yīng)用框架。
1.基于瀏覽器的應(yīng)用框架一般分為兩種:
Aplication frameworks:提供了瀏覽器功能,但其最著名的還是在于通過(guò)窗口生成組件建立桌面GUI。 如:DOJO,qooxdoo,JavaFX,YUI,ExtJS(最開始的名字是yui-ext,因?yàn)閿U(kuò)展了yui的庫(kù),后來(lái)發(fā)展為可選擇擴(kuò)展jquery和prototype就改名字為ext),F(xiàn)lex(與ExtJS有很多相似),TIBET等。
Infrastructural frameworks:提供基本的框架功能和輕便式瀏覽器端操作,讓開發(fā)者去創(chuàng)建具體應(yīng)用,主要功能包括:
-
- 基于XMLHttpRequest組件的瀏覽器交互功能
- XML解析和操作功能
- 根據(jù)XMLHttpRequest的返回信息進(jìn)行相應(yīng)的DOM操作
- 一些特殊情況下,和其他的瀏覽器端技術(shù)如Flash(或Java Applets)等集合到一起應(yīng)用
如:jQuery(代碼量少),prototype,MooTools(功能比prototype強(qiáng)大,設(shè)計(jì)比prototype完善,從prototype中汲取很多有益的設(shè)計(jì)理念),Google AJAXSLT,F(xiàn)lash/JavaScript,等。
2.基于服務(wù)器端的應(yīng)用框架通常以下面兩種方式工作(盡管它們根據(jù)不同的語(yǔ)言進(jìn)行了分類) :
HTML/JS Generation(HTML/JS生成):通過(guò)服務(wù)器端生成HTML和JS代碼在傳遞給瀏覽器端進(jìn)行直接運(yùn)行 。如:Ext GWT。
遠(yuǎn)程交互:JavaScript調(diào)用服務(wù)器端函數(shù)(例如調(diào)用Java函數(shù))并返回給JavaScript的回調(diào)句柄,或者請(qǐng)求服務(wù)器端數(shù)據(jù)信息,例如Session信息,數(shù)據(jù)庫(kù)查詢等。 如DWR。
- 無(wú)框架 Ajax分頁(yè)(原創(chuàng))
- AJAX 圖片展示框架56個(gè) 提升開發(fā)效率
- AJAX 驗(yàn)證框架13個(gè)
- PHP 開源AJAX框架14種
- jquery 框架使用教程 AJAX篇
- Jquery AJAX 框架的使用方法
- 基于JQuery框架的AJAX實(shí)例代碼
- javascript之AJAX框架使用說(shuō)明
- asp.net省市三級(jí)聯(lián)動(dòng)的DropDownList+Ajax的三種框架(aspnet/Jquery/ExtJs)示例
- 簡(jiǎn)單的前端js+ajax 購(gòu)物車框架(入門篇)
- 簡(jiǎn)單介紹不用庫(kù)(框架)自己寫ajax
相關(guān)文章
AJAX實(shí)現(xiàn)指定部分頁(yè)面刷新效果
這篇文章主要為大家詳細(xì)介紹了AJAX實(shí)現(xiàn)指定部分頁(yè)面刷新效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
Ajax跨域訪問(wèn)Cookie丟失問(wèn)題的解決方法
這篇文章主要介紹了Ajax跨域訪問(wèn)Cookie丟失問(wèn)題的解決方法,需要的朋友可以參考下2017-02-02
基于Ajax技術(shù)實(shí)現(xiàn)考試倒計(jì)時(shí)并自動(dòng)提交試卷
這篇文章主要介紹了基于Ajax技術(shù)實(shí)現(xiàn)考試倒計(jì)時(shí)并自動(dòng)提交試卷 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
ajax異步回調(diào)函數(shù)中給外部變量賦值的問(wèn)題探討
ajax異步回調(diào)函數(shù)中給外部變量賦值的問(wèn)題在本文將為大家詳細(xì)探討下,感興趣的朋友可以參考下2013-09-09
使用AJAX(包含正則表達(dá)式)驗(yàn)證用戶登錄的步驟
這篇文章主要介紹了使用AJAX(包含正則表達(dá)式)驗(yàn)證用戶登錄的步驟,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
Ajax獲取響應(yīng)內(nèi)容長(zhǎng)度的方法
這篇文章主要介紹了Ajax獲取響應(yīng)內(nèi)容長(zhǎng)度的方法,涉及Ajax調(diào)用成功后返回方法的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
ajax簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了ajax基礎(chǔ)知識(shí)點(diǎn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06

