您好,登錄后才能下訂單哦!
前言
由于瀏覽器有同源策略,所以要想獲取非同源(協議,域名,端口三者有一不同都算非同源)的頁面的數據,就得進行跨域
(1) jsonp原理
由于script標簽的src屬性可以訪問非同源的js腳本,所以通過src屬性訪問服務器會返回函數的js代碼,而我們想要的數據就作為函數參數返回,而我們會先定義這個函數,返回的js代碼就可執行
(2) jsonp實現代碼
請求頁面
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <script type="text/javascript"> function jsonp(data){ console.log(username) } </script> <script type="text/javascript" src="jquery-1.8.3.min.js"> </script> <script type="text/javascript"> $(document).ready(function(){ var url = "http://www.example.com/jsonp.php?callback=jsonp"; var script = $('<script><\/script>'); script.attr("src",url); $("body").append(script); }); </script> </body> </html>
<?php $data = {'name': '張三'}; $callback = $_GET['callback']; echo $callback."(".json_encode($data).")"; ?php>
之后php會返回
jsonp({ name:'niuni })
然后PHP返回的代碼h會被請求頁面的jsonp方法執行
(3)jQuery的簡便jsonp跨域
<script> function showData (data) { console.info(data); } $(document).ready(function () { $("#btn").click(function () { $.ajax({ url: "http://www.example.comjsonp", type: "GET", dataType: "jsonp",// 返回數據類型 jsonpCallback: "showData",//回調函數 // 獲取數據成功就執行success函數 success: function (data) { console.info("data"); } }); }); }); </script>
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。