国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > AJAX > 正文

Ajax的小貼士使用小結(jié)

2024-09-01 08:31:46
字體:
供稿:網(wǎng)友

在使用Ajax過程中,有時候總會遇到一些難題,瀏覽器兼容、編碼、IE下的特殊處理等等,偶爾會搞的人頭昏腦脹哭笑不得,這里列一些小貼士,或許有些用。

使用Javascript庫
Ajax的流行和巨大威力,讓我們重新審視了Javascript的開發(fā),也直接促使各種庫的出現(xiàn)。對于普通的開發(fā)者,使用一些適合自己的Javascript庫不僅可以避免Ajax應用上的瀏覽器兼容等問題,也使其開發(fā)更加的穩(wěn)定和高效。這里列一些我知曉的輕量級的Javascript庫:
1 YUI:YAHOO出品,組件豐富強大健壯穩(wěn)定,是團隊協(xié)作開發(fā)的首選。
2 JQuery:靈活、高效,其基于CSS3 和XPath的選擇器語法引擎非常的強大和完整。
3 Prototype:是一個非常優(yōu)雅的Javascript庫,最經(jīng)典的莫過于$符號了,DWR,JQuery都被它吸引了。在它基礎上出現(xiàn)了script.aculo.us。
4 Mootools:核心語法和Prototype比較類似,但是用過之后才知道什么叫簡單輕巧和短小精悍。

編碼問題
通過XMLHttpRequest獲取的數(shù)據(jù),默認的字符編碼是UTF-8,如果前端頁面是GB2312或者其它編碼,顯示獲取的數(shù)據(jù)就是亂碼。通過XMLHTTPRequest,POST的數(shù)據(jù)也是UTF-8編碼,如果后臺是GB2312或者其他編碼也會出現(xiàn)亂碼。解決方法:
1 統(tǒng)一到UTF-8。這也是國際化的必然趨勢。
2 輸出通過XMLHttpRequest獲取的文本文本時,在headers中增加文本聲明(直接HTML聲明沒有作用)。如:
PHP:header('Content-Type:text/html;charset=GB2312');
ASP:Response.Charset = "GB2312"
JSP:response.setHeader("Charset","GB2312");
3 WWW服務器上強制聲明。比如:apache下的配置:
AddDefaultCharset GB2312
這種情況主要是應對通過XMLHttpRequest訪問的文件是靜態(tài)文件,無法聲明headers的情況下。
靜態(tài)頁面一般都會經(jīng)過Apache的deflate或gzip壓縮,此時在上面情況下IE中,首次通過XMLhttpRequest獲得的數(shù)據(jù)可以正常顯示,但再獲取數(shù)據(jù)顯示時出現(xiàn)亂碼,這次因為再次獲取的數(shù)據(jù)來自緩存,可能由于瀏覽器解壓縮的問題導致Apache設置的默認編碼聲明丟失。由于這種情況下一般是純文本,可能還無法禁止緩存,可以設置XMLhttpRequest訪問的文本文件不壓縮來解決這個問題。

4 非UTF-8頁面通過XMLHttpRequest獲取的文本文本輸出前字符轉(zhuǎn)碼成unicode,或者編碼直接是UTF-8,可以正常顯示。如實例所示。

IE下的緩存問題
由于IE的緩存處理機制問題,每次通過XMLHttpRequest訪問動態(tài)頁面返回的總是首次訪問的內(nèi)容,解決方法有:

1 客戶端通過添加隨機字符串解決。如:

復制代碼 代碼如下:


var url = 'http://dancewithnet.com/';
url += '?temp=' + new Date().getTime();
url += '?temp=' + Math.random();


2 在HTTP headers禁止緩存。如:
HTTP:

復制代碼 代碼如下:


<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />
<meta http-equiv="expires" content="Thu, 01 Jan 1970 00:00:01 GMT" />
<meta http-equiv="expires" content="0" />


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");


IE下的reponseXML問題
使用responseXML時,IE下只能接受.xml為后綴的XML文件,如果不能以.xml文件為結(jié)尾的,則需要如下處理:
1 在服務器端聲明是xml文件類型。如:
PHP:header("Content-Type:text/xml;charset=utf-8");
ASP:Response.ContentType = "text/xml";
JSP:response.setHeader("ContentType","text/xml");
2 利用responseText獲取,然后封裝成XML。
3 在AJAX應用上,JSON和JsonML是XML非常好的替代品。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 茶陵县| 花莲县| 玉环县| 怀宁县| 五莲县| 乐业县| 句容市| 祁连县| 合川市| 康保县| 临城县| 泽普县| 雅安市| 天台县| 瑞昌市| 石河子市| 龙井市| 兰溪市| 广德县| 尼木县| 西藏| 南和县| 手游| 垫江县| 清流县| 疏勒县| 玉林市| 石林| 中江县| 会昌县| 玉山县| 文山县| 宁波市| 阿合奇县| 兴宁市| 蒲江县| 宝应县| 曲松县| 库伦旗| 博乐市| 乡城县|