Ajax的小貼士使用小結_AJAX相關

來源:互聯網
上載者:User
在使用Ajax過程中,有時候總會遇到一些難題,瀏覽器安全色、編碼、IE下的特殊處理等等,偶爾會搞的人頭昏腦脹哭笑不得,這裡列一些小貼士,或許有些用。 

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

編碼問題 
       通過XMLHttpRequest擷取的資料,預設的字元編碼是UTF-8,如果前端頁面是GB2312或者其它編碼,顯示擷取的資料就是亂碼。通過XMLHTTPRequest,POST的資料也是UTF-8編碼,如果後台是GB2312或者其他編碼也會出現亂碼。解決方案: 
1 統一到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訪問的檔案是靜態檔案,無法聲明headers的情況下。 
靜態頁面一般都會經過Apache的deflate或gzip壓縮,此時在上面情況下IE中,首次通過XMLhttpRequest獲得的資料可以正常顯示,但再擷取資料顯示時出現亂碼,這次因為再次擷取的資料來自緩衝,可能由於瀏覽器解壓縮的問題導致Apache設定的預設編碼聲明丟失。由於這種情況下一般是純文字,可能還無法禁止緩衝,可以設定XMLhttpRequest訪問的文字檔不壓縮來解決這個問題。 

4 非UTF-8頁面通過XMLHttpRequest擷取的文本文本輸出前字元轉碼成unicode,或者編碼直接是UTF-8,可以正常顯示。如執行個體所示。

IE下的緩衝問題 
由於IE的緩衝處理機制問題,每次通過XMLHttpRequest訪問動態網頁面返回的總是首次訪問的內容,解決方案有: 

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檔案為結尾的,則需要如下處理: 
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非常好的替代品。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.