首先我們應(yīng)該知道ajax和jsonp可以與后臺(tái)通信,獲取數(shù)據(jù)和信息,但是又不用刷新整個(gè)頁面,實(shí)現(xiàn)頁面的局部刷新。
接下來我們就來看一下ajax和jsonp的區(qū)別。
ajax和jsonp的區(qū)別:
ajax是一種發(fā)送http請(qǐng)求與后臺(tái)進(jìn)行異步通訊的技術(shù)。其原理是實(shí)例化xmlhttp對(duì)象,使用此對(duì)象與后臺(tái)通信。
一個(gè)完整的AJAX請(qǐng)求一般包括以下步驟:
(1)實(shí)例化XMLHttpRequest對(duì)象
(2)連接服務(wù)器
(3)發(fā)送請(qǐng)求
(4)接收響應(yīng)數(shù)據(jù)
jsonp是一種可以實(shí)現(xiàn)跨域發(fā)送http請(qǐng)求的數(shù)據(jù)通信格式,可以嵌在ajax中使用。其原理是利用script標(biāo)簽可以跨域鏈接資源的特性。
JSONP由兩部分組成:回調(diào)函數(shù)和數(shù)據(jù),回調(diào)函數(shù)一般是在瀏覽器控制,作為參數(shù)發(fā)往服務(wù)器端(當(dāng)然,你也可以固定回調(diào)函數(shù)的名字,但客戶端和服務(wù)器端的名稱一定要一致)。當(dāng)服務(wù)器響應(yīng)時(shí),服務(wù)器端就會(huì)把該函數(shù)和數(shù)據(jù)拼成字符串返回。
JSONP的請(qǐng)求過程如下:
請(qǐng)求階段:瀏覽器創(chuàng)建一個(gè) script 標(biāo)簽,并給其src 賦值。
發(fā)送請(qǐng)求:當(dāng)給script的src賦值時(shí),瀏覽器就會(huì)發(fā)起一個(gè)請(qǐng)求。
數(shù)據(jù)響應(yīng):服務(wù)端將要返回的數(shù)據(jù)作為參數(shù)和函數(shù)名稱拼接在一起(格式類似”jsonpCallback({name: 'abc'})”)返回。當(dāng)瀏覽器接收到了響應(yīng)數(shù)據(jù),由于發(fā)起請(qǐng)求的是 script,所以相當(dāng)于直接調(diào)用 jsonpCallback 方法,并且傳入了一個(gè)參數(shù)。
最后:jsonp只支持get請(qǐng)求,ajax支持get和post請(qǐng)求。
新聞熱點(diǎn)
疑難解答
圖片精選