亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JSONP原理及使用

2019-11-06 09:42:43
字體:
來源:轉載
供稿:網友

JSON是一種輕量級的數據傳輸格式,被廣泛應用于當前Web應用中。JSON格式數據的編碼和解析基本在所有主流語言中都被實現,所以現在大部分前后端分離的架構都以JSON格式進行數據的傳輸。首先拋出瀏覽器同源策略這個概念,為了保證用戶訪問的安全,現代瀏覽器使用了同源策略,即不允許訪問非同源的頁面.

JSONP就是用來解決跨域請求問題的,那么具體是怎么實現的呢?

Ajax請求受同源策略影響,不允許進行跨域請求,而script標簽src屬性中的鏈接卻可以訪問跨域的js腳本,利用這個特性,服務端不再返回JSON格式的數據,而是返回一段調用某個函數的js代碼,在src中進行了調用,這樣實現了跨域。

JSONP具體實現

1.首先看下ajax中如果進行跨域請求會如何。 前端代碼在域www.newton.com下面,使用ajax發送了一個跨域的get請求

<!DOCTYPE html><html><head>    <title>GoJSONP</title></head><body><script type="text/javascript">    function jsonhandle(data){        alert("age:" + data.age + "name:" + data.name);    }</script><script type="text/Javascript" src="jquery-1.8.3.min.js"></script><script type="text/javascript">    $(document).ready(function(){        $.ajax({            type : "get",            async: false,            url : "http://www.newton_xt.com/student.php?id=1",            type: "json",            success : function(data) {                jsonhandle(data);            }        });    });</script></body></html>12345678910111213141516171819202122232425262728291234567891011121314151617181920212223242526272829

后端PHP代碼放在域www.newton_xt.com下,簡單的輸出一段json格式的數據

jsonhandle({    "age" : 15,    "name": "John",})12341234

當訪問前端代碼http://www.newton.com/gojsonp/index.html 時 Chrome報以下錯誤 這里寫圖片描述 提示了不同源的URL禁止訪問

2.下面使用JSONP,將前端代碼中的ajax請求去掉,添加了一個script標簽,標簽的src指向了另一個域www.newton_xt.com下的remote.js腳本

<!DOCTYPE html><html><head>    <title>GoJSONP</title></head><body><script type="text/javascript">    function jsonhandle(data){        alert("age:" + data.age + "name:" + data.name);    }</script><script type="text/javascript" src="jquery-1.8.3.min.js"></script><script type="text/javascript" src="http://www.newton_xt.com/remote.js"></script></body></html>1234567891011121314151612345678910111213141516

這里調用了跨域的remote.js腳本,remote.js代碼如下:

jsonhandle({    "age" : 15,    "name": "John",})12341234

也就是這段遠程的js代碼執行了上面定義的函數,彈出了提示框 這里寫圖片描述

3.將前端代碼再進行修改,代碼如下:

<!DOCTYPE html><html><head>    <title>GoJSONP</title></head><body><script type="text/javascript">    function jsonhandle(data){        alert("age:" + data.age + "name:" + data.name);    }</script><script type="text/javascript" src="jquery-1.8.3.min.js"></script><script type="text/javascript">    $(document).ready(function(){        var url = "http://www.newton_xt.com/student.php?id=1&callback=jsonhandle";        var obj = $('<script><//script>');        obj.attr("src",url);        $("body").append(obj);    });</script></body></html>12345678910111213141516171819202122231234567891011121314151617181920212223

這里動態的添加了一個script標簽,src指向跨域的一個php腳本,并且將上面的js函數名作為callback參數傳入,那么我們看下PHP代碼怎么寫的:

<?php$data = array(    'age' => 20,    'name' => '張三',);$callback = $_GET['callback'];echo $callback."(".json_encode($data).")";return;1234567891012345678910

PHP代碼返回了一段JS語句,即

jsonhandle({    "age" : 15,    "name": "張三",})12341234

此時訪問頁面時,動態添加了一個script標簽,src指向PHP腳本,執行返回的JS代碼,成功彈出提示框。 所以JSONP將訪問跨域請求變成了執行遠程JS代碼,服務端不再返回JSON格式的數據,而是返回了一段將JSON數據作為傳入參數的函數執行代碼。

4.最后jQuery提供了方便使用JSONP的方式,代碼如下:

<!DOCTYPE html><html><head>    <title>GoJSONP</title></head><body><script type="text/javascript" src="jquery-1.8.3.min.js"></script><script type="text/javascript">    $(document).ready(function(){        $.ajax({            type : "get",            async: false,            url : "http://www.newton_xt.com/student.php?id=1",            dataType: "jsonp",            jsonp:"callback", //請求php的參數名            jsonpCallback: "jsonhandle",//要執行的回調函數            success : function(data) {                alert("age:" + data.age + "name:" + data.name);            }        });    });</script></body></html>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一本色道久久88综合日韩精品| 国产成人精品在线视频| 亚洲黄页网在线观看| 国产精品午夜一区二区欲梦| 欧美孕妇与黑人孕交| 7777kkkk成人观看| 国产成人97精品免费看片| 97精品国产97久久久久久春色| 国产亚洲xxx| 亚洲精品理论电影| 久久久91精品| 色妞色视频一区二区三区四区| 国产偷国产偷亚洲清高网站| 亚洲天堂av电影| 国产精品免费在线免费| 国产一区二区三区三区在线观看| 日韩av影视综合网| 亚洲精品国产精品国自产观看浪潮| 夜夜躁日日躁狠狠久久88av| 26uuu久久噜噜噜噜| 日韩不卡在线观看| 欧美怡春院一区二区三区| 亚洲黄色在线观看| 中文字幕免费精品一区高清| 久久影视电视剧凤归四时歌| 亚洲a级在线播放观看| 日韩av高清不卡| 日韩专区在线观看| 91美女片黄在线观| 秋霞成人午夜鲁丝一区二区三区| 中文字幕精品www乱入免费视频| 亚洲国产成人久久综合| 91久久国产精品91久久性色| 红桃视频成人在线观看| 狠狠躁夜夜躁人人躁婷婷91| 日韩av在线免费看| 中文字幕亚洲一区二区三区五十路| 国产精品扒开腿做爽爽爽男男| 亚洲全黄一级网站| 久热精品视频在线| 91高清免费视频| 国产成人综合久久| 日韩电影中文字幕一区| 91成品人片a无限观看| 成人激情黄色网| 欧美午夜精品久久久久久久| 中文字幕欧美日韩| 亚洲天堂一区二区三区| 国产精品福利无圣光在线一区| 精品国产一区二区三区久久久狼| 91禁外国网站| 色综合色综合网色综合| 欧美中文字幕在线观看| 日韩精品极品毛片系列视频| 97在线观看视频国产| 色婷婷久久av| 亚洲国产三级网| 欧美激情成人在线视频| 成人国产亚洲精品a区天堂华泰| 中文字幕综合在线| 欧美日韩国产一中文字不卡| 久久久久北条麻妃免费看| 欧美精品18videosex性欧美| 欧美在线视频一二三| 91精品在线影院| 成人福利网站在线观看11| 色妞欧美日韩在线| 久操成人在线视频| 狠狠色香婷婷久久亚洲精品| 日韩精品高清视频| 日韩在线免费av| 日韩亚洲成人av在线| 国产ts人妖一区二区三区| 欧美成人免费网| 国产精品jizz在线观看麻豆| 国产精品久久久久av免费| 亚洲成人精品久久久| 国产成人亚洲综合91精品| 日韩中文字幕在线看| 欧美精品日韩三级| 国产午夜精品美女视频明星a级| 欧美日韩国产在线播放| 国产精品日韩一区| 成人h猎奇视频网站| 国产精品入口福利| 国产在线拍偷自揄拍精品| 色婷婷成人综合| 国产亚洲美女精品久久久| 亚洲欧美另类中文字幕| 91欧美精品成人综合在线观看| 国内精品久久久久影院 日本资源| 中文字幕自拍vr一区二区三区| 欧美大码xxxx| 欧美电影免费在线观看| 国产精品久久久久久亚洲影视| 国产精品爽爽ⅴa在线观看| 精品国内自产拍在线观看| 91香蕉嫩草神马影院在线观看| 日韩成人中文字幕在线观看| 九九久久久久久久久激情| 一区二区三区视频免费| 国产精品久久电影观看| 久久综合久久美利坚合众国| 亚洲第一中文字幕在线观看| 国产精品成久久久久三级| 日韩av片永久免费网站| 久久精品99无色码中文字幕| 欧美一区二三区| 欧美精品激情blacked18| 亚洲欧美国产制服动漫| 亚洲人成网站在线播| 久久最新资源网| 久久精品视频99| 日韩av黄色在线观看| 97视频在线免费观看| 欧美日韩国产在线播放| 国产精品美女免费视频| 91精品视频播放| 亚洲欧美国产日韩中文字幕| 国产成人精品电影| 国色天香2019中文字幕在线观看| 97超级碰在线看视频免费在线看| 欧美黑人巨大精品一区二区| 美日韩丰满少妇在线观看| 毛片精品免费在线观看| 国产精品亚洲视频在线观看| 亚洲一区二区三区777| 亚洲片在线观看| 欧美日韩国产丝袜美女| 欧美—级高清免费播放| 国产美女精品免费电影| 57pao国产精品一区| 亚洲色图狂野欧美| 亚洲精品理论电影| 国产+成+人+亚洲欧洲| 久久亚洲国产精品| 日韩一区二区三区xxxx| 欧日韩不卡在线视频| 一本久久综合亚洲鲁鲁| 午夜精品久久久久久久99热| 欧美黑人性生活视频| 久久久久www| 美日韩精品免费观看视频| 亚洲色图15p| 久久精品99无色码中文字幕| 国产在线精品播放| 91精品久久久久久久久不口人| 国产精品久久久久久av福利| 欧美国产亚洲精品久久久8v| 欧美精品亚州精品| 色中色综合影院手机版在线观看| 色七七影院综合| 亚洲专区中文字幕| 国产精品男女猛烈高潮激情| 亚洲一区二区久久| 国产亚洲激情视频在线| 日韩69视频在线观看| 乱亲女秽乱长久久久| 在线精品国产欧美| 日韩电影中文字幕av| 国产精品1区2区在线观看| 黄色成人av网| 久久久免费精品视频| 国内精品小视频|