Jquery中使用JsonP加載本地json文件解決跨域問題


場景

jquery中直接請求本地json文件時會提示跨域問題。

 

 

Jsonp(JSON with Padding)

 是 json 的一種"使用模式",可以讓網頁從別的域名(網站)那獲取資料,即跨域讀取數據。

為什么我們從不同的域(網站)訪問數據需要一個特殊的技術( JSONP )呢?這是因為同源策略。

同源策略,它是由 Netscape 提出的一個著名的安全策略,現在所有支持 JavaScript 的瀏覽器都會使用這個策略。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。

實現

1、本地新建一個json文件,叫user.json

  {
    "name":"公眾號",
    "sex":"",
    "email":"badao@123.com"
    },
    {
    "name":"霸道的程序猿",
    "sex":"",
    "email":"badao@123.com"
    },
    {
    "name":"歡迎關注",
    "sex":"",
    "email":"badao@123.com"
    }

上面是原json數據格式。

 

 

2、使用JsonP需要在json數據中使用"回調方法()"將json數據包括起來。

其中回調方法名是自定義的,只需要保持一致就行。比如這里就叫train

train([
    {
    "name":"公眾號",
    "sex":"",
    "email":"badao@123.com"
    },
    {
    "name":"霸道的程序猿",
    "sex":"",
    "email":"badao@123.com"
    },
    {
    "name":"歡迎關注",
    "sex":"",
    "email":"badao@123.com"
    }
] )

3、然后引入jquery

<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>

4、在script中聲明回調函數

    <script type="text/javascript">

        //回調函數
        function train(data){
            console.log(data);
        }

    </script>

注意這里的回調函數名字與上面包括的一致。

然后data中就可以獲取到json數據。

5、使用如下格式引入json數據

<script src="data/user.json?cb=train"></script>

這里的cb代表callback回調,后面跟的是上面一致的回調方法名。

前面是json文件的路徑。

6、注意這里要先將回調方法聲明,再引入json文件,不然會提示回調方法未定義

 

 

7、完整示例代碼

<!doctype html>
<html lang="en">

<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Jquery 加載 本地Json數據</title>
</head>

<body>
    <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
    <script type="text/javascript">

        //回調函數
        function train(data){
            console.log(data);
        }

    </script>

    <script src="data/user.json?cb=train"></script>
</body>

</html>

8、效果

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM