国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

jsjsonp方式解決跨域請求

來源:懂視網 責編:小采 時間:2020-11-27 20:32:21
文檔

jsjsonp方式解決跨域請求

jsjsonp方式解決跨域請求:直觀的理解: 就是在客戶端動態注冊一個函數 function a(data),然后將函數名傳到服務器,服務器返回一個a({/*json*/})到客戶端運行,這樣就調用客戶端的 function a(data),從而實現了跨域. 誕生背景: 1、Ajax直接請求普通文件存在跨域無權訪問的問題,
推薦度:
導讀jsjsonp方式解決跨域請求:直觀的理解: 就是在客戶端動態注冊一個函數 function a(data),然后將函數名傳到服務器,服務器返回一個a({/*json*/})到客戶端運行,這樣就調用客戶端的 function a(data),從而實現了跨域. 誕生背景: 1、Ajax直接請求普通文件存在跨域無權訪問的問題,
直觀的理解:

就是在客戶端動態注冊一個函數

function a(data),然后將函數名傳到服務器,服務器返回一個a({/*json*/})到客戶端運行,這樣就調用客戶端的

function a(data),從而實現了跨域.

誕生背景:

1、Ajax直接請求普通文件存在跨域無權訪問的問題,甭管是靜態頁面、動態網頁、web服務、wcf、只要是跨域請求,一律不行。

2、不過,web頁面上調用js文件時則不受此影響

3、進一步推廣,我們發現,凡是擁有Src屬性的標簽都有跨域能力,如:

遠程服務器remoteserver.com根目錄下有個remote.js文件代碼如下:

alert('我是遠程文件');

本地服務器localserver.com下有個jsonp.html頁面代碼如下:




 
 

毫無疑問,頁面將會彈出一個提示窗體,顯示跨域調用成功。

2、現在我們在jsonp.html頁面定義一個函數,然后在遠程remote.js中傳入數據進行調用。

jsonp.html頁面代碼如下:




 
 

運行之后查看結果,頁面成功彈出提示窗口,顯示本地函數被跨域的遠程js調用成功,并且還接收到了遠程js帶來的數據。很欣喜,跨域遠程獲取數據的目的基本實現了,但是又一個問題出現了,我怎么讓遠程js知道它應該調用的本地函數叫什么名字呢?畢竟是jsonp的服務者都要面對很多服務對象,而這些服務對象各自的本地函數都不相同啊?我們接著往下看。

3、聰明的開發者很容易想到,只要服務端提供的js腳本是動態生成的就行了唄,這樣調用者可以傳一個參數過去告訴服務端“我想要一段調用XXX函數的js代碼,請你返回給我”,于是服務器就可以按照客戶端的需求來生成js腳本并響應了。

看jsonp.html頁面的代碼:




 
 

這次的代碼變化比較大,不再直接把遠程js文件寫死,而是編碼實現動態查詢,而這也正是jsonp客戶端實現的核心部分,本例中的重點也就在于如何完成jsonp調用的全過程。

我們看到調用的url中傳遞了一個code參數,告訴服務器我要查的是CA1998次航班的信息,而callback參數則告訴服務器,我的本地回調函數叫做flightHandler,所以請把查詢結果傳入這個函數中進行調用。

flightHandler({
 "code": "CA1998",
 "price": 1780,
 "tickets": 5
});

我們看到,傳遞給flightHandler函數的是一個json,它描述了航班的基本信息。運行一下頁面,成功彈出提示窗口,jsonp的執行全過程順利完成!

4、到這里為止的話,相信你已經能夠理解jsonp的客戶端實現原理了吧?剩下的就是如何把代碼封裝一下,以便于與用戶界面交互,從而實現多次和重復調用。

什么?你用的是jQuery,想知道jQuery如何實現jsonp調用?好吧,那我就好人做到底,再給你一段jQuery使用jsonp的代碼(我們依然沿用上面那個航班信息查詢的例子,假定返回jsonp結果不變):

OK,服務器很聰明,這個叫做flightResult.aspx的頁面生成了一段這樣的代碼提供給jsonp.html(服務端的實現這里就不演示了,與你選用的語言無關,說到底就是拼接字符串):


 
 
 Untitled Page
 

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

jsjsonp方式解決跨域請求

jsjsonp方式解決跨域請求:直觀的理解: 就是在客戶端動態注冊一個函數 function a(data),然后將函數名傳到服務器,服務器返回一個a({/*json*/})到客戶端運行,這樣就調用客戶端的 function a(data),從而實現了跨域. 誕生背景: 1、Ajax直接請求普通文件存在跨域無權訪問的問題,
推薦度:
標簽: 方法 解決 請求
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

Top
主站蜘蛛池模板: 一区二区三区电影 | 久久亚洲伊人中字综合精品 | 国产在线精选免费视频8x | 综合伊人久久在一二三区 | 国产手机在线αⅴ片无码观看 | 777久久成人影院 | 国产拍拍拍免费视频网站 | 日韩电影免费在线观看中文字幕 | 久久精品视频一区二区三区 | 亚洲国产一区二区三区 | 国产中文字幕在线观看 | 91精品国产99久久 | 国产全部视频在线播放 | 亚洲韩精品欧美一区二区三区 | 亚洲另类天堂 | 欧美试看 | 视频一区二区三区欧美日韩 | 欧美高清69hd | 日韩www| 一级毛片免费毛片一级毛片免费 | 日本国产最新一区二区三区 | 国产欧美日韩精品第二区 | 亚洲国产成人久久一区二区三区 | 亚洲国产精品久久久久666 | 欧美日本道免费二区三区 | 国产精品久久一区 | 国产成人久久精品区一区二区 | 日韩 亚洲 欧美 中文 高清 | 伊人精品视频在线观看 | 五月激情综合 | 亚洲精品免费观看 | 亚洲欧美日韩成人一区在线 | 北条麻妃在线播放 | 国内精品视频一区二区三区 | 国产日产高清欧美一区二区三区 | 激情欧美一区二区三区中文字幕 | 欧美日韩视频在线 | 亚洲欧美一区二区三区国产精品 | 日韩在线欧美 | 欧美一区二区三区视视频 | 亚洲综合国产 |