一.什么是ajax
AJAX的全稱是Asynchronous JavaScript and XML(是異步的 javascript 和 XML)。
ajax不是新的編程語言,而是一種使用現有標准的新方法,ajax是一種在無需重新加載整個網頁的情況下,能夠更新部分網頁的技術。
ajax是一種用於快速創建動態網頁的技術。通過在后台與服務器進行少量數據交換,ajax就可以使網頁實現異步更新。這意味着可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。而傳統的網頁(不使用ajax)如果需要更新內容,必須重載整個網頁面。
ajax的應用使用支持以上技術的web瀏覽器作為運行平台。這些瀏覽器目前包括:Mozilla、Firefox、Internet Explorer、Opera、Konqueror及Safari。但是Opera不支持XSL格式對象,也不支持XSLT。
ajax前景非常樂觀,可以提高系統性能,優化用戶界面。AJAX現有直接框架AjaxPro,可以引入AjaxPro.2.dll文件,可以直接在前台頁面js調用后台頁面的方法。但此框架與FORM驗證有沖突。另微軟也引入了AJAX組建,需要添加AjaxControlToolkit.dll文件,可以在控件列表中出現相關控件。
ajax的優點:
1、最大的一點是頁面無刷新,用戶的體驗非常好。
2、使用異步方式與服務器通信,具有更加迅速的響應能力。。
3、可以把以前一些服務器負擔的工作轉嫁到客戶端,利用客戶端閑置的能力來處理,減輕服務器和帶寬的負擔,節約空間和寬帶租用成本。並且減輕服務器的負擔,ajax的原則是“按需取數據”,可以最大程度的減少冗余請求,和響應對服務器造成的負擔。
4、基於標准化的並被廣泛支持的技術,不需要下載插件或者小程序。
5、ajax可使因特網應用程序更小、更快,更友好。
ajax的缺點:
1、ajax不支持瀏覽器back按鈕。
2、安全問題 AJAX暴露了與服務器交互的細節。
3、對搜索引擎的支持比較弱。
4、破壞了程序的異常機制。
5、不容易調試。
$.ajax({
url: ‘string’,
type: ‘GET/POST’,
dataType: ‘string’, //規定獲取的數據類型
timeout: 1000, //設置延時
cache: true/false, //是否自動緩存
error: function(){}, //錯誤執行方法
success: function(){}//成功執行方法
})
二.$.ajax()方法中dataType屬性的取值
$.ajax()方法中dataType屬性要求為String類型的參數,預期服務器返回的數據類型。如果不指定,jQuery將自動根據http包mime信息返回responseXML或responseText,並作為回調函數參數傳遞。可用的類型如下:
xml:返回XML文檔,可用jquery處理。
html:返回純文本HTML信息;包含的script標簽會在插入DOM時執行。
script:返回純文本JavaScript代碼。不會自動緩存結果。除非設置了cache參數。注意在遠程請求時(不在同一個域下),所有post請求都將轉為get請求。
json:返回JSON數據。
jsonp:”jsonp”格式,使用jsonp形式調用函數時,如”myurl?callback=?”jquery將自轉換?為正確的函數名,以執行回調函數。
text:純文本格式數據。
三、datatype的解析方式
“xml”數據類型的解析:XML是一種通用的數據交換格式,它的平台無關性、語言無關性、系統無關性、給數據集成與交互帶來了極大的方便。XML在不同的語言環境中解析方式都是一樣的,只不過實現的語法不同而已。
XML的解析方式分為四種:
1、DOM解析;
2、SAX解析;
3、JDOM解析;
4、DOM4J解析。
1、DOM解析
DOM的全稱是Document Object Model,也即文檔對象模型。在應用程序中,基於DOM的XML分析器將一個XML文檔轉換成一個對象模型的集合(通常稱DOM樹),應用程序正是通過對這個對象模型的操作,來實現對XML文檔數據的操作。通過DOM接口,應用程序可以在任何時候訪問XML文檔中的任何一部分數據,因此,這種利用DOM接口的機制也被稱作隨機訪問機制。
DOM接口提供了一種通過分層對象模型來訪問XML文檔信息的方式,這些分層對象模型依據XML的文檔結構形成了一棵節點樹。無論XML文檔中所描述的是什么類型的信息,即便是制表數據、項目列表或一個文檔,利用DOM所生成的模型都是節點樹的形式。也就是說,DOM強制使用樹模型來訪問XML文檔中的信息。由於XML本質上就是一種分層結構,所以這種描述方法是相當有效的。
DOM樹所提供的隨機訪問方式給應用程序的開發帶來了很大的靈活性,它可以任意地控制整個XML文檔中的內容。然而,由於DOM分析器把整個XML文檔轉化成DOM樹放在了內存中,因此,當文檔比較大或者結構比較復雜時,對內存的需求就比較高。而且,對於結構復雜的樹的遍歷也是一項耗時的操作。所以,DOM分析器對機器性能的要求比較高,實現效率不十分理想。不過,由於DOM分析器所采用的樹結構的思想與XML文檔的結構相吻合,同時鑒於隨機訪問所帶來的方便,因此,DOM分析器還是有很廣泛的使用價值的。
優點:
1、形成了樹結構,有助於更好的理解、掌握,且代碼容易編寫。
2、解析過程中,樹結構保存在內存中,方便修改。
缺點:
1、由於文件是一次性讀取,所以對內存的耗費比較大。
2、如果XML文件比較大,容易影響解析性能且可能會造成內存溢出。
2、SAX解析
SAX的全稱是Simple APIs for XML,也即XML簡單應用程序接口。與DOM不同,SAX提供的訪問模式是一種順序模式,這是一種快速讀寫XML數據的方式。當使用SAX分析器對XML文檔進行分析時,會觸發一系列事件,並激活相應的事件處理函數,應用程序通過這些事件處理函數實現對XML文檔的訪問,因而SAX接口也被稱作事件驅動接口。
優點:
1、采用事件驅動模式,對內存耗費比較小。
2、適用於只處理XML文件中的數據時。
缺點:
1、編碼比較麻煩。
2、很難同時訪問XML文件中的多處不同數據。
3、JDOM解析
特征:
1、僅使用具體類,而不使用接口。
2、API大量使用了Collections類。
4、DOM4J解析
特征:
1、JDOM的一種智能分支,它合並了許多超出基本XML文檔表示的功能。
2、它使用接口和抽象基本類方法。
3、具有性能優異、靈活性好、功能強大和極端易用的特點。
4、是一個開放源碼的文件
“html”數據類型的解析:
后台返回純文本HTML信息;包含的script標簽會在插入DOM時執行。
將一段HTML片段保存在一個HTML文件中,在另外的主頁面直接讀取該HTML文件,然后解析里面的HTML代碼片段融入到主頁面中。
如:a.html頁面內容
在其他頁面解析a.html代碼如下:
(“#a1”).click(function(){(“#div2”).load(‘fragment.html’);
return false;
});
在項目中常用的是Dom去解析html,但是以下介紹的解析器可能會讓你更簡單、容易去解析html。另外javaweb中常用的dom解析是dom4j
1、jsoup 是一款 Java 的HTML 解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似於jQuery的操作方法來取出和操作數據。據說它是基於MIT協議發布的。
jsoup的主要功能如下:
從一個URL,文件或字符串中解析HTML;
使用DOM或CSS選擇器來查找、取出數據;
可操作HTML元素、屬性、文本;
“script”數據類型的解析:
返回純文本JavaScript代碼,
“jsonp”數據類型的解析:
首先得理解什么是jsonp?
由於受到同源策略的限制所以產生了jsonp方式來跨域請求數據
同源:
同源策略是瀏覽器的一種安全策略,所謂同源是指,同域名,同協議,同端口。
1.、目的:保護用戶信息安全
2、限制:cookie、localStorage和IndexDB無法讀取
無法操作跨域的iframe里的dom元素
ajax請求不能發送
利用在頁面中動態創建
