ajax與jsonp的區(qū)別及用法
首先我們應(yīng)該知道ajax和jsonp可以與后臺通信,獲取數(shù)據(jù)和信息,但是又不用刷新整個頁面,實現(xiàn)頁面的局部刷新。
接下來我們就來看一下ajax和jsonp的區(qū)別。
ajax和jsonp的區(qū)別:
ajax是一種發(fā)送http請求與后臺進行異步通訊的技術(shù)。其原理是實例化xmlhttp對象,使用此對象與后臺通信。
一個完整的AJAX請求一般包括以下步驟:
(1)實例化XMLHttpRequest對象
(2)連接服務(wù)器
(3)發(fā)送請求
(4)接收響應(yīng)數(shù)據(jù)
jsonp是一種可以實現(xiàn)跨域發(fā)送http請求的數(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)時,服務(wù)器端就會把該函數(shù)和數(shù)據(jù)拼成字符串返回。
JSONP的請求過程如下:
請求階段:瀏覽器創(chuàng)建一個 script 標(biāo)簽,并給其src 賦值。
發(fā)送請求:當(dāng)給script的src賦值時,瀏覽器就會發(fā)起一個請求。
數(shù)據(jù)響應(yīng):服務(wù)端將要返回的數(shù)據(jù)作為參數(shù)和函數(shù)名稱拼接在一起(格式類似”jsonpCallback({name: 'abc'})”)返回。當(dāng)瀏覽器接收到了響應(yīng)數(shù)據(jù),由于發(fā)起請求的是 script,所以相當(dāng)于直接調(diào)用 jsonpCallback 方法,并且傳入了一個參數(shù)。
最后:jsonp只支持get請求,ajax支持get和post請求。
相關(guān)文章
JavaScript字符串對象toUpperCase方法入門實例(用于把字母轉(zhuǎn)換為大寫)
這篇文章主要介紹了JavaScript字符串對象toUpperCase方法入門實例,toUpperCase方法用于把字母轉(zhuǎn)換為大寫,需要的朋友可以參考下2014-10-10
Adapter適配器模式在JavaScript設(shè)計模式編程中的運用分析
適配器模式的作用是解決兩個軟件實體間的接口不兼容的問題,在JavaScript尤其是AJAX方面比較常用,接下來看一下對Adapter適配器模式在JavaScript設(shè)計模式編程中的運用分析2016-05-05
Javascript基礎(chǔ)教程之for循環(huán)
這篇文章主要介紹了Javascript基礎(chǔ)教程之for循環(huán)的相關(guān)資料以及示例分享,需要的朋友可以參考下2015-01-01
javascript中的throttle和debounce淺析
這篇文章主要介紹了javascript中的throttle和debounce淺析,分別介紹了throttle和debounce的使用場景及具體案例,需要的朋友可以參考下2014-06-06

