ajax介紹
Ajax使用JS的XmlHttpRequest對(duì)象,在建立對(duì)象后,通過(guò)該對(duì)象的open、send等方法發(fā)送HTTP的請(qǐng)求,并注冊(cè)異步的回調(diào)函數(shù)來(lái)處理該對(duì)象調(diào)用后的返回值,在返回正確和錯(cuò)誤的情況下分別做相應(yīng)的處理。
在jquery框架中使用ajax
使用原生js的ajax訪問(wèn)一般代碼比較復(fù)雜,所以大多js框架都封裝了ajax相關(guān)的操作。如在jquery中,通過(guò)調(diào)用ajax方法,在方法中定義待傳輸數(shù)據(jù)的方法名稱(chēng)、數(shù)據(jù)內(nèi)容以及成功或失敗后的返回方法,即可完成一次ajax的請(qǐng)求響應(yīng)過(guò)程。
HTTP
ajax本質(zhì)上使用的是HTTP協(xié)議,在其中定義HTTP方法、URI、傳輸數(shù)據(jù)(一般使用JSON格式)等。
跨域訪問(wèn)
在AJAX請(qǐng)求過(guò)程中,如果包含的URI與該網(wǎng)頁(yè)URI的主域名、子域名、協(xié)議或訪問(wèn)端口不同時(shí),系統(tǒng)認(rèn)為該次訪問(wèn)屬于跨域訪問(wèn)。在默認(rèn)配置情況下,這種訪問(wèn)方式是被拒絕的。
JSONP
如果系統(tǒng)存在跨域訪問(wèn)時(shí),可使用JSONP的方式封裝跨域訪問(wèn)的AJAX請(qǐng)求,但該請(qǐng)求方式只對(duì)GET類(lèi)訪問(wèn)是有效的,它會(huì)在URL對(duì)于的數(shù)據(jù)段部分增加一個(gè)轉(zhuǎn)換處理。
在請(qǐng)求中,可以增加一個(gè)GET參數(shù),名稱(chēng)為callback,內(nèi)容為jquery自動(dòng)生成的一個(gè)唯一值參數(shù)。在收到請(qǐng)求后,將callback的值加上實(shí)際待返回的數(shù)據(jù)返回內(nèi)容。
實(shí)現(xiàn)跨域訪問(wèn)的其他方式
HTML5使用的XMLREQUEST2實(shí)現(xiàn)了跨域訪問(wèn),低于IE10不支持。

按照?qǐng)D中的方式,在服務(wù)器端HTTP頭部參數(shù)中增加這兩個(gè)參數(shù)后,即可實(shí)現(xiàn)跨域的HTTP請(qǐng)求,這種方法比JSONP的方式實(shí)現(xiàn)簡(jiǎn)單很多。