JSONP是json的一種使用模式,可以讓網(wǎng)頁從別的域名那獲取資料,即跨域讀取資料。
AJAX請求普通文件存在跨域無法訪問,但凡是擁有”src”這個屬性的標簽都擁有跨域的能力,比如<\script>、<\img>、<\iframe>
JSON數(shù)據(jù)格式可以簡潔的描述復(fù)雜數(shù)據(jù),還被js原生支持,裝進js格式的文件里,供客戶端調(diào)用和進一步處理。
web客戶端通過與調(diào)用腳本一模一樣的方式,來調(diào)用跨域服務(wù)器上動態(tài)生成的js格式文件(一般以JSON為后綴),顯而易見,服務(wù)器之所以要動態(tài)生成JSON文件,目的就在于把客戶端需要的數(shù)據(jù)裝入進去。
為了便于客戶端使用數(shù)據(jù),逐漸形成了一種非正式傳輸協(xié)議,人們把它稱作JSONP,該協(xié)議的一個要點就是允許用戶傳遞一個callback參數(shù)給服務(wù)端,然后服務(wù)端返回數(shù)據(jù)時會將這個callback參數(shù)作為函數(shù)名來包裹住JSON數(shù)據(jù),這樣客戶端就可以隨意定制自己的函數(shù)來自動處理返回數(shù)據(jù)了。
callback參數(shù)則告訴服務(wù)器,我的本地回調(diào)函數(shù)叫做flightHandler,所以請把查詢結(jié)果傳入這個函數(shù)中進行調(diào)用。?