我們都知道在原生js中,需要使用Ajax異步請(qǐng)求,就必須要手寫一段獲得XMLHttpRequest對(duì)象的函數(shù),開始寫幾次十幾次還是能當(dāng)練練手寫代碼的能力,
然而你每個(gè)項(xiàng)目都需要去寫得時(shí)候你就會(huì)覺得很痛苦。而且原生js代碼寫Ajax還有幾個(gè)屬性個(gè)API你是少不了的!
例如:
open() - 請(qǐng)求方式(get/post)和寫入請(qǐng)求到那個(gè)php中。
setRequestHeader() - 如果你選擇的請(qǐng)求方式為post,還要寫一段坑爹的字符串參數(shù)("Content-Type","application/x-www-form-urlencoded")
send() - 如果你選擇的請(qǐng)求方式是get,參數(shù)則為null,如果選擇的是post,參數(shù)格式是"key=value"
onreadystatechange - 事件,當(dāng)服務(wù)器端的狀態(tài)改變時(shí),會(huì)觸發(fā)該事件
對(duì)應(yīng)的服務(wù)器端狀態(tài)屬性
readyState - 請(qǐng)求狀態(tài)(0-4)
status - 狀態(tài)碼
每一次的請(qǐng)求都需要寫這一坨代碼,簡直是惡心,但是我們有jQuery這一個(gè)功能強(qiáng)大的js庫,能幫我們省去了很多代碼,我們來看看jQuery中有哪些API能
讓我們快捷的使用Ajax
主要的API有六個(gè):
$.ajax()
$().load()
$.get()
$.post()
$.getscript()
$.getJSON()
因?yàn)楸举N吧沒有php的運(yùn)行環(huán)境,所以只能看代碼自己去理解的去看一些jQuery手冊(cè),綜合去自己聯(lián)系
首先是第一個(gè)API,$.ajax()
這是一個(gè)參數(shù)最多最復(fù)雜的一個(gè)API
第二個(gè)API,$().load()
這個(gè)API可以說是最簡單的一個(gè)API,但使用范圍很受限制
注意
- 服務(wù)器端響應(yīng)的數(shù)據(jù)自動(dòng)寫入到<div>元素
- 現(xiàn)象的原因 - div元素調(diào)用load()方法
- load()方法的請(qǐng)求類型
- 沒有請(qǐng)求數(shù)據(jù)時(shí),請(qǐng)求類型是GET
- 發(fā)送請(qǐng)求數(shù)據(jù)時(shí),請(qǐng)求類型是POST
- load()方法的請(qǐng)求類型由是否發(fā)送請(qǐng)求數(shù)據(jù)來決定
- load()方法接收服務(wù)器端的響應(yīng)數(shù)據(jù)
- 是以字符串類型(HTML格式)來接收
第三第四個(gè)API的使用方式一樣,所以只舉例其中一個(gè),$.get()
注意:
- 和$().load()不同的是可以選擇什么樣的請(qǐng)求方式
- dataType有三種不同的格式
- 默認(rèn)html
- xml - XML格式
- json - JSON格式
- data - 可選,設(shè)置當(dāng)前Ajax請(qǐng)求的數(shù)據(jù)
- 格式必須是key/value格式
- data - 可選,設(shè)置當(dāng)前Ajax請(qǐng)求的數(shù)據(jù)
- callback - 可選,當(dāng)前Ajax請(qǐng)求成功后的回調(diào)函數(shù)
- 該回調(diào)函數(shù)的形參(data)就是服務(wù)器端響應(yīng)的數(shù)據(jù)內(nèi)容
- callback中的data的形成在這個(gè)API中返回的直接是Object{key:value}這樣的格式