jQuery提供了簡(jiǎn)單而強(qiáng)大的選擇器功能,同時(shí)對(duì)Ajax操作也給出了很好的支持。在Ajax方面,jQuery除了提供底層的jQuery.ajax()方法外,也提供了下面的簡(jiǎn)單方法:
(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()功能比較強(qiáng)大,可配置的參數(shù)比較多,現(xiàn)在主要對(duì)這個(gè)方法的注意事項(xiàng)進(jìn)行總結(jié)。
1. jQuery.ajax()默認(rèn)是以異步的方式請(qǐng)求的,如果需要同步,使用參數(shù)async為false。因?yàn)橛行?yīng)用必須同步請(qǐng)求數(shù)據(jù)的。例如,某些Flash與JS交互應(yīng)用中,請(qǐng)求一個(gè)JS函數(shù)需要馬上得到返回?cái)?shù)據(jù)。此時(shí),必須采用同步的Ajax調(diào)用方式。
2. Ajax如果是Get請(qǐng)求,返回的數(shù)據(jù)一般會(huì)被瀏覽器緩存,如果不想被緩存,可以設(shè)置cache參數(shù)為false;或者發(fā)送請(qǐng)求是帶上時(shí)間戳,這樣瀏覽器會(huì)認(rèn)為是新的請(qǐng)求,而重新從服務(wù)器加載數(shù)據(jù)。當(dāng)然,如果是POST發(fā)送的請(qǐng)求則不會(huì)被緩存。
3. dataType:預(yù)期服務(wù)器返回的數(shù)據(jù)類型。如果不指定,jQuery 將自動(dòng)根據(jù) HTTP 包 MIME 信息返回 responseXML 或 responseText,并作為回調(diào)函數(shù)參數(shù)傳遞,可用值:
(1)"xml": 返回 XML 文檔,可用 jQuery 處理。
(2)"html": 返回純文本 HTML 信息;包含的script標(biāo)簽會(huì)在插入dom時(shí)執(zhí)行。
(3)"script": 返回純文本 JavaScript 代碼。不會(huì)自動(dòng)緩存結(jié)果。除非設(shè)置了"cache"參數(shù)。'''注意:'''在遠(yuǎn)程請(qǐng)求時(shí)(不在同一個(gè)域下),所有POST請(qǐng)求都將轉(zhuǎn)為GET請(qǐng)求。(因?yàn)閷⑹褂肈OM的script標(biāo)簽來(lái)加載)
(4)"json": 返回 JSON 數(shù)據(jù) 。
(5)"jsonp": JSONP 格式。使用 JSONP 形式調(diào)用函數(shù)時(shí),如 "myurl?callback=?" jQuery 將自動(dòng)替換 ? 為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。
(6)"text": 返回純文本字符串
其中,"script"、"json"設(shè)置可以解決Ajax的跨域問題。
4. 如果服務(wù)器返回的一個(gè)字符串或數(shù)值,則使用普通的ajax調(diào)用即可。
如果服務(wù)器返回的是一個(gè)JSON對(duì)象,那么最好采用jQuery.getJSON的方式,或者設(shè)置dataType=json。因?yàn)闉g覽器解析JSON對(duì)象需要時(shí)間,直接返回JSON對(duì)象,節(jié)省解析時(shí)間,可以避免在服務(wù)器明明有返回?cái)?shù)據(jù),但是瀏覽器得不到的錯(cuò)誤。
5. Ajax調(diào)用是需要時(shí)間的,所以一般將Ajax調(diào)用后的處理代碼全部放在回調(diào)方法中。不能采用這樣的處理方式:
而必須這樣處理:即將處理代碼放到success函數(shù)里面!
6. jQuery.getJSON實(shí)例:
新聞熱點(diǎn)
疑難解答
圖片精選