ajax與jsonp的區(qū)別及用法
首先我們應(yīng)該知道ajax和jsonp可以與后臺(tái)通信,獲取數(shù)據(jù)和信息,但是又不用刷新整個(gè)頁(yè)面,實(shí)現(xiàn)頁(yè)面的局部刷新。
接下來(lái)我們就來(lái)看一下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)求過(guò)程如下:
請(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)求。
相關(guān)文章
有關(guān)于JS輔助函數(shù)inherit()的問(wèn)題
本篇為大家介紹有關(guān)于JS輔助函數(shù)inherit()的一些問(wèn)題。2013-04-04javascript 語(yǔ)法基礎(chǔ) 想學(xué)習(xí)js的朋友可以看看
javascript 語(yǔ)法基礎(chǔ),都是一些大體的說(shuō)下常見(jiàn)問(wèn)題,適合有點(diǎn)別的程序基礎(chǔ)的朋友。2009-12-12javascript窗口寬高,鼠標(biāo)位置,滾動(dòng)高度(詳細(xì)解析)
javascript窗口寬高,鼠標(biāo)位置,滾動(dòng)高度(詳細(xì)解析)。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-11-11從數(shù)據(jù)結(jié)構(gòu)分析看:用for each...in 比 for...in 要快些
本篇文章小編將為大家介紹,從數(shù)據(jù)結(jié)構(gòu)分析看:用for each...in 比 for...in 要快些。需要的朋友可以參考一下2013-04-04使用JavaScript 實(shí)現(xiàn)對(duì)象 勻速/變速運(yùn)動(dòng)的方法
本篇文章是對(duì)JavaScript中實(shí)現(xiàn)對(duì)象勻速/變速運(yùn)動(dòng)的方法進(jìn)行了詳細(xì)的介紹。需要的朋友參考下2013-05-05javascript中的onkeyup和onkeydown區(qū)別介紹
文本框里輸入的時(shí)候要開(kāi)始計(jì)算文本框里面輸入了多少字,自然想到了onkeydown事件,然后計(jì)算value.length的方法,下面看下具體的代碼2013-04-04