jsonp原理

JSONP原理:

  1. 首先在客戶端注冊一個callback, 然后把callback的名字傳給服務器。
  2. 此時廊佩,服務器先生成 json 數(shù)據(jù)囚聚。
  3. 然后以 javascript 語法的方式,生成一個function , function 名字就是傳遞上來的callback參數(shù)值 .
  4. 最后將 json 數(shù)據(jù)直接以入?yún)⒌姆绞奖瓿胖玫?function 中顽铸,這樣就生成了一段 js 語法的文檔,返回給客戶端料皇。
  5. 客戶端瀏覽器谓松,解析script標簽,并執(zhí)行返回的 javascript 文檔践剂,此時數(shù)據(jù)作為參數(shù)鬼譬,傳入到了客戶端預先定義好的 callback 函數(shù)里.

jsonp 原理,代碼示意:

本地定義的函數(shù)===

<script>
    function local_func(data) {
        // 函數(shù)內(nèi)容
    }
</script>

返回的數(shù)據(jù)放在srcipt標簽里===

<script src="http://api.douban.com/v2/movie/in_theaters?callback=local_func"></script>
等價于:
<script>
    ;local_func([返回的數(shù)據(jù)])
</script>

jsonp的2種實現(xiàn)方式:

  1. jsonp 在原生js中的實現(xiàn):
    通過src="http://api.douban.com/v2/movie/in_theaters?callback=local_func"逊脯。
    直接輸入訪問:http://api.douban.com/v2/movie/in_theaters 优质,返回的數(shù)據(jù)是一個對象:{xxx}。
    直接輸入訪問:http://api.douban.com/v2/movie/in_theaters?callback=? 男窟,返回的數(shù)據(jù)是一個對象:{xxx}盆赤。
    直接輸入訪問:http://api.douban.com/v2/movie/in_theaters?callback=local_func ,返回的數(shù)據(jù)是:;local_func({xxx})歉眷。
    注意點:
    callback指定的回調(diào)函數(shù)牺六,是客戶端注冊的,必須是定義在window下的全局函數(shù)汗捡。
    例子網(wǎng)址:https://github.com/cag2050/jsonp_principle/blob/master/src/jsonp_js.html
  2. jsonp 在jquery ajax中的實現(xiàn):
    例子網(wǎng)址:https://github.com/cag2050/jsonp_principle/blob/master/src/jsonp_jquery.html
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末淑际,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扇住,更是在濱河造成了極大的恐慌春缕,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艘蹋,死亡現(xiàn)場離奇詭異锄贼,居然都是意外死亡,警方通過查閱死者的電腦和手機女阀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門宅荤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屑迂,“玉大人,你說我怎么就攤上這事冯键∪桥危” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵惫确,是天一觀的道長手报。 經(jīng)常有香客問我,道長改化,這世上最難降的妖魔是什么掩蛤? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮所袁,結(jié)果婚禮上盏档,老公的妹妹穿的比我還像新娘。我一直安慰自己燥爷,他們只是感情好蜈亩,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著前翎,像睡著了一般稚配。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上港华,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天道川,我揣著相機與錄音,去河邊找鬼立宜。 笑死冒萄,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的橙数。 我是一名探鬼主播尊流,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼灯帮!你這毒婦竟也來了崖技?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤钟哥,失蹤者是張志新(化名)和其女友劉穎迎献,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腻贰,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡吁恍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片践盼。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸦采,死狀恐怖宾巍,靈堂內(nèi)的尸體忽然破棺而出咕幻,到底是詐尸還是另有隱情,我是刑警寧澤顶霞,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布肄程,位于F島的核電站,受9級特大地震影響选浑,放射性物質(zhì)發(fā)生泄漏蓝厌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一古徒、第九天 我趴在偏房一處隱蔽的房頂上張望拓提。 院中可真熱鬧,春花似錦隧膘、人聲如沸代态。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹦疑。三九已至,卻和暖如春萨驶,著一層夾襖步出監(jiān)牢的瞬間歉摧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工腔呜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留叁温,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓核畴,卻偏偏與公主長得像膝但,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子膛檀,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 前言 原文地址 倉庫地址 jsonp(JSON with padding)你一定不會陌生锰镀,前端向后端拿數(shù)據(jù)的方式之...
    謙龍閱讀 593評論 0 4
  • 寫在前面 一說到javascript的跨域,很多人第一時間想到的就是jsonp(JSON with Padding...
    小楓學幽默閱讀 722評論 0 6
  • JSONP的誕生 1.首先咖刃,因為ajax無法跨域泳炉,然后開發(fā)者就有所思考 2.其次,開發(fā)者發(fā)現(xiàn)嚎杨,script標簽的s...
    heachou閱讀 482評論 0 0
  • 在上一篇文章中介紹了CORS跨源資源共享花鹅,在本節(jié)中介紹JSONP跨源技術。 JSONP也可以用來實現(xiàn)跨域資源請求枫浙,...
    滾石_c2a6閱讀 275評論 0 0
  • “你害怕死亡嗎。她看著我真友。小時候黄痪,家里死人,我站在棺材旁邊看盔然,不明白一切為什么可以這樣完美地停頓桅打。”(安妮寶貝) ...
    三木科閱讀 354評論 2 0