Ajax的一些有用的小技巧_AJAX教程
推薦:如何克服對(duì)Ajax應(yīng)用的阻礙 未來(lái)的Web services和面向服務(wù)的架構(gòu)(SOA)可能就在于Ajax。Ajax是一種用于創(chuàng)建豐富的、基于Web應(yīng)用的編程技術(shù),它看起來(lái)和桌面軟件差不多,但卻基于瀏覽器,而且消耗資源不多。 A
在使用Ajax過(guò)程中,有時(shí)候總會(huì)遇到一些難題,瀏覽器兼容、編碼、IE下的特殊處理等等,偶爾會(huì)搞的人頭昏腦脹哭笑不得,這里列一些小貼士,或許有些用。
使用javascript庫(kù)
Ajax的流行和巨大威力,讓我們重新審視了javascript的開(kāi)發(fā),也直接促使各種庫(kù)的出現(xiàn)。對(duì)于普通的開(kāi)發(fā)者,使用一些適合自己的javascript庫(kù)不僅可以避免Ajax應(yīng)用上的瀏覽器兼容等問(wèn)題,也使其開(kāi)發(fā)更加的穩(wěn)定和高效。這里列一些我知曉的輕量級(jí)的javascript庫(kù):
- YUI:YAHOO出品,組件豐富強(qiáng)大健壯穩(wěn)定,是團(tuán)隊(duì)協(xié)作開(kāi)發(fā)的首選。
- JQuery:靈活、高效,其基于CSS3 和XPath的選擇器語(yǔ)法引擎非常的強(qiáng)大和完整。
- Prototype:是一個(gè)非常優(yōu)雅的javascript庫(kù),最經(jīng)典的莫過(guò)于$符號(hào)了,DWR,JQuery都被它吸引了。在它基礎(chǔ)上出現(xiàn)了script.aculo.us。
- Mootools:核心語(yǔ)法和Prototype比較類(lèi)似,但是用過(guò)之后才知道什么叫簡(jiǎn)單輕巧和短小精悍。
編碼問(wèn)題
通過(guò)XMLHttpRequest獲取的數(shù)據(jù),默認(rèn)的字符編碼是UTF-8,如果前端頁(yè)面是GB2312或者其它編碼,顯示獲取的數(shù)據(jù)就是亂碼。通過(guò)XMLHTTPRequest,POST的數(shù)據(jù)也是UTF-8編碼,如果后臺(tái)是GB2312或者其他編碼也會(huì)出現(xiàn)亂碼。解決方法:
- 統(tǒng)一到UTF-8。這也是國(guó)際化的必然趨勢(shì)。
- 輸出通過(guò)XMLHttpRequest獲取的文本文本時(shí),在headers中增加文本聲明(直接HTML聲明沒(méi)有作用)。如:
PHP:header('Content-Type:text/html;charset=GB2312');
ASP:Response.Charset = "GB2312"
JSP:response.setHeader("Charset","GB2312"); - WWW服務(wù)器上強(qiáng)制聲明。比如:apache下的配置:
AddDefaultCharset GB2312
這種情況主要是應(yīng)對(duì)通過(guò)XMLHttpRequest訪問(wèn)的文件是靜態(tài)文件,無(wú)法聲明headers的情況下。
靜態(tài)頁(yè)面一般都會(huì)經(jīng)過(guò)Apache的deflate或gzip壓縮,此時(shí)在上面情況下IE中,首次通過(guò)XMLhttpRequest獲得的數(shù)據(jù)可以正常顯示,但再獲取數(shù)據(jù)顯示時(shí)出現(xiàn)亂碼,這次因?yàn)樵俅潍@取的數(shù)據(jù)來(lái)自緩存,可能由于瀏覽器解壓縮的問(wèn)題導(dǎo)致Apache設(shè)置的默認(rèn)編碼聲明丟失。由于這種情況下一般是純文本,可能還無(wú)法禁止緩存,可以設(shè)置XMLhttpRequest訪問(wèn)的文本文件不壓縮來(lái)解決這個(gè)問(wèn)題。 - 非UTF-8頁(yè)面通過(guò)XMLHttpRequest獲取的文本文本輸出前字符轉(zhuǎn)碼成unicode,或者編碼直接是UTF-8,可以正常顯示。如實(shí)例所示。
IE下的緩存問(wèn)題
由于IE的緩存處理機(jī)制問(wèn)題,每次通過(guò)XMLHttpRequest訪問(wèn)動(dòng)態(tài)頁(yè)面返回的總是首次訪問(wèn)的內(nèi)容,解決方法有:
- 客戶(hù)端通過(guò)添加隨機(jī)字符串解決。如:
var url = 'http://dancewithnet.com/';
url = '?temp=' new Date().getTime();
url = '?temp=' Math.random(); - 在HTTP headers禁止緩存。如:
HTTP:
PHP:
header("Expires: Thu, 01 Jan 1970 00:00:01 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
ASP:
Response.expires=0
Response.addHeader("pragma","no-cache")
Response.addHeader("Cache-Control","no-cache, must-revalidate")
JSP:
response.addHeader("Cache-Control", "no-cache");
response.addHeader("Expires", "Thu, 01 Jan 1970 00:00:01 GMT"); - 在XMLHttpRequest發(fā)送請(qǐng)求之前加上:
XMLHttpRequest.setRequestHeader("If-Modified-Since","0");
XMLHttpRequest.send(null);
IE下的reponseXML問(wèn)題
使用responseXML時(shí),IE下只能接受.xml為后綴的XML文件,如果不能以.xml文件為結(jié)尾的,則需要如下處理:
- 在服務(wù)器端聲明是xml文件類(lèi)型。如:
PHP:header("Content-Type:text/xml;charset=utf-8");
ASP:Response.ContentType = "text/xml";
JSP:response.setHeader("ContentType","text/xml"); - 利用responseText獲取,然后封裝成XML。
- 在AJAX應(yīng)用上,JSON和JsonML是XML非常好的替代品。
分享:AJAX技術(shù)開(kāi)發(fā)Back按鈕問(wèn)題的應(yīng)用程序一、 簡(jiǎn)介AJAX,一個(gè)異步javascript和XML的縮略詞,是最近出來(lái)的技術(shù)詞語(yǔ)。異步意味著你可以經(jīng)由超文本傳輸協(xié)議(HTTP)向一個(gè)服務(wù)器發(fā)出請(qǐng)求并且在等待該響應(yīng)時(shí)繼續(xù)處理另外的數(shù)據(jù)。這就
- Ajax中瀏覽器的緩存問(wèn)題解決方法
- AJAX和WebService實(shí)現(xiàn)省市縣三級(jí)聯(lián)動(dòng)具體代碼
- ajax 登錄功能簡(jiǎn)單實(shí)現(xiàn)(未連接數(shù)據(jù)庫(kù))
- AJAX和WebService實(shí)現(xiàn)郵箱驗(yàn)證(無(wú)刷新驗(yàn)證郵件地址是否合法)
- AJAX和三層架構(gòu)實(shí)現(xiàn)分頁(yè)功能具體思路及代碼
- 使用AJAX返回WebService里的集合具體實(shí)現(xiàn)
- AJAX獲取服務(wù)器當(dāng)前時(shí)間及時(shí)間格式輸出處理
- ajax傳遞多個(gè)參數(shù)具體實(shí)現(xiàn)
- ajax傳遞一個(gè)參數(shù)具體實(shí)現(xiàn)
- 滑輪滾動(dòng)到頁(yè)面底部ajax加載數(shù)據(jù)配合jsonp實(shí)現(xiàn)探討
- jQery ajax——load()方法示例介紹
- jQuery+Ajax實(shí)現(xiàn)表格數(shù)據(jù)不同列標(biāo)題排序(為表格注入活力)
AJAX教程Rss訂閱編程教程搜索
AJAX教程推薦
猜你也喜歡看這些
- 巧用Ajax和RSS做個(gè)人門(mén)戶(hù)網(wǎng)站
- AJAX與數(shù)據(jù)島實(shí)現(xiàn)無(wú)刷新綁定
- JQuery的ajax的用法在asp中使用$.ajax()實(shí)現(xiàn)
- Json數(shù)據(jù)異步綁定到界面的Table并且自動(dòng)刷新原理及代碼
- AJAX如何處理書(shū)簽和后退按鈕
- ajax傳遞多個(gè)參數(shù)具體實(shí)現(xiàn)
- Ajax請(qǐng)求中的異步與同步,需要注意的地方說(shuō)明
- 實(shí)例解析Ajax標(biāo)簽導(dǎo)航-DOM技巧篇
- Ajax通訊原理XMLHttpRequest
- 如何用Ajax和RSS制作一個(gè)首頁(yè)新聞
- 相關(guān)鏈接:
- 教程說(shuō)明:
AJAX教程-Ajax的一些有用的小技巧
。