jQuery提供了簡單且強大的選擇器功能,同時對Ajax操作也給予了很好的支援。在Ajax方面,jQuery除了提供底層的jQuery.ajax()方法外,也提供了以下的簡單方法:
(1) jQuery.get(url, [data], [callback], [type])
(2) jQuery.getJSON(url, [data], [callback])
(3) jQuery.getScript(url, [callback])
(4) jQuery.post(url, [data], [callback], [type])
由於jQuery.ajax()功能比較強大,可配置的參數比較多,現在主要對這個方法的注意事項進行總結。
1. jQuery.ajax()預設是以非同步的方式請求的,如果需要同步,使用參數async為false。因為有些應用程式必須同步請求資料的。例如,某些Flash與JS互動應用中,請求一個JS函數需要馬上得到回傳資料。此時,必須採用同步的Ajax呼叫方式。
2. Ajax如果是Get請求,回傳的資料通常會被瀏覽器緩存,如果不想被緩存,可以設定cache參數為false;或傳送請求是帶上時間戳,這樣瀏覽器會認為是新的請求,而重新從伺服器載入資料。當然,如果是POST發送的請求則不會被快取。
3. dataType:預期伺服器回傳的資料類型。如果不指定,jQuery 將自動根據 HTTP 套件 MIME 資訊傳回 responseXML 或 responseText,並作為回呼函數參數傳遞,可用值:
(1)"xml": 傳回 XML 文檔,可用 jQuery 處理。
(2)"html": 傳回純文字 HTML 資訊;所包含的script標籤會在插入dom時執行。
(3)"script": 傳回純文字 JavaScript 程式碼。不會自動快取結果。除非設定了"cache"參數。 '''注意:'''在遠端請求時(不在同一個網域下),所有POST請求都會轉為GET請求。 (因為將使用DOM的script標籤來載入)
(4)"json": 傳回 JSON 資料 。
(5)"jsonp": JSONP 格式。使用 JSONP 形式呼叫函數時,如 "myurl?callback=?" jQuery 會自動取代 ? 為正確的函式名,以執行回呼函數。
(6)"text": 傳回純文字字串
其中,"script"、"json"設定可以解決Ajax的跨域問題。
4. 若伺服器傳回的一個字串或數值,則使用普通的ajax呼叫即可。
如果伺服器回傳的是一個JSON對象,那麼最好採用jQuery.getJSON的方式,或是設定dataType=json。因為瀏覽器解析JSON對象需要時間,直接返回JSON對象,節省解析時間,可以避免在伺服器明明有返回數據,但是瀏覽器得不到的錯誤。
5. Ajax呼叫是需要時間的,所以一般將Ajax呼叫後的處理程式碼全部放在回呼方法中。不能採用這樣的處理方式:
而必須這樣處理:即將處理程式碼放到成功函數裡面!