JSONP是一種使用模式,人們常常把JSONP和JSON混淆,他們雖然有關系,但是描述的不是一個事物,JSONP是JSON with Padding的簡稱。本篇會說明JSONP是一個什么?怎么是去使用。
通俗講,JSONP 為解決跨域而誕生。是為了基于瀏覽器Web請求不通源之間的請求。
具體講,是解決不同源,被瀏覽器監(jiān)管Javascript的安全限制。
http://zijieyoumin.cn
調(diào)用http://zijieyoumin.cn/json/
是不會跨域的。http://zijieyoumin.cn
調(diào)用http://www.itboy.net/json/
是跨域的,因為不同域名。 http://zijieyoumin.cn
調(diào)用http://a.sojson.com/search1_baidu.com.html
是跨域的。因為是不同二級域名。 http://zijieyoumin.cn:8080
調(diào)用http://zijieyoumin.cn:8081
是跨域的。因為是不同端口。 http://zijieyoumin.cn
調(diào)用http://zijieyoumin.cn
是跨域的。因為是不同請求協(xié)議,http和https。 188.188.188.20
調(diào)用199.199.199.99
是跨域的。因為不同IP。 localhost
調(diào)用127.0.0.1
也是跨域的。其實他也是不同域名。 前端代碼,Javascript:
<script> //jsonp回調(diào)方法,一定要寫在jsonp請求前面 function callback(txt){ alert(txt); } </script> <script src ="/layui/demo-testJsonp.shtml" type="text/javascript" ></script>
后端代碼,Java:
/** * jsonp 測試 * @return */ @RequestMapping(value="testJsonp",method=RequestMethod.GET) @ResponseBody public String testJsonp(){ return "callback('test jsonp');"; }
前端會alert
彈出的內(nèi)容“test jsonp”
。
前端代碼,Javascript:
<script> //jsonp回調(diào)方法,一定要寫在jsonp請求前面 function testjson(txt){ alert(txt); } </script> <script src ="/layui/demo-testJsonp.shtml?callback=testjson" type="text/javascript" ></script>
后端代碼,Java:
/** * jsonp 測試 * @return */ @RequestMapping(value="testJsonp",method=RequestMethod.GET) @ResponseBody public String testJsonp(String callback){ return callback +"('test jsonp');"; }
前端代碼,Javascript:
<script> var testjsonp = function(data){ for(var i in data){ alert( i +":" + data[i]); }; } var demoJSONP = function () { //nowIp() 為獲取當前的IP,這個函數(shù)是我自己的。 $.getScript("https://open.onebox.so.com/dataApi?type=ip&src=onebox&tpl=0&num=1&query=ip&url=ip&ip="+nowIp()+"&callback=testjsonp"); } </script>
這個接口您不要去嘗試使用,因為它的數(shù)據(jù)來自百度而已。
PHP代碼:
<?php $data = "......."; $callback = $_GET['callback']; echo $callback.'('.json_encode($data).')'; exit; ?>
前端代碼,Javascript:
<script> $.ajax({ type : "post", url : "ajax.php", dataType : "jsonp", jsonp: "callback",//傳遞給請求處理程序或頁面的,用以獲得jsonp回調(diào)函數(shù)名的參數(shù)名(默認為:callback) jsonpCallback:"success_jsonpCallback",//自定義的jsonp回調(diào)函數(shù)名稱,默認為jQuery自動生成的隨機函數(shù)名 success : function(json){ alert('success'); }, error:function(){ alert('fail'); } }); </script>
綜合技術(shù)交流:點擊加入--> [SO JSON官方交流①群][收費]
綜合技術(shù)交流:點擊加入--> [SO JSON官方交流②群][免費]
要求:不能發(fā)廣告、暴力、政治、付費教程,違者直接踢出。
備注:入群費用5元,沒有QQ錢包,可以先支付寶
or 微信
掃碼支付5元贊助后,我拉您進去。QQ聯(lián)系我。
掃碼贊助:贊助二維碼。
技術(shù)交流QQ群:①群259217951,②群166848545
站長郵箱:so@sojson.com
對頁面內(nèi)容有任何疑問和建議,請聯(lián)系我們。
所有贊助/開支都講公開明細,用于網(wǎng)站維護:贊助名單查看
正在加載... ...