溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

跨域請求之JSONP

發布時間:2020-06-01 09:10:39 來源:網絡 閱讀:326 作者:haomad 欄目:移動開發

跨域懇求的方法有很多種,

1,iframe

2,document.domain

3,window.name

4,script

5,XDomainRequest (IE8+)

6,XMLHTTPRequest (Firefox3.5+)

7,postMessage (HTML5)

8,后臺代理

...

它們有各自的優缺點,回來的數據格局也各不同,應根據需要慎重挑選。比方iframe回來html片段就對比適合,費老勁用它回來JSON就因小失大了。這篇開端我將打造一個有用的跨域懇求東西Sjax。運用script懇求的最大缺點,挑戰是過錯處理。比方404過錯,它不象XMLHTTPRequest能精確的回來狀況碼404。我把這個放在最終一篇。


本系列首要描繪以上列舉的方法4,即通過script回來JSON格局數據數據。這種方法如今稱為JSONP。JSON是目前前后臺交流運用最盛行,也最廣泛的格局之一。相對于前期的AJAX回來XML(AJAX中的X即是XML),JSON顯得更輕量級,沒有剩余的Tag符號,解析也是原生的。XML回來到前端后先轉成文檔,通過DOM API一層層的解析。解析DOM是開支對比大的,尤其在前期的IE版別中(IE6/7/8),core js與dom交流的價值是很大的。


JSONP的實現思路很簡單

1, 前端創立script符號,設置src,添加到head中(你可以往body中添加)。

2, 后臺回來一個js變量jsonp,這個jsonp即是懇求后的JSON數據。

3, 回調完成后刪去script符號(還有一些整理作業如防止有些瀏覽器內存泄露等)。


接口

Sjax.load(

    url,// 跨過懇求的URL

    success, // 回調函數,有必要界說一個形參,用于接納后臺回來的全局變量jsonp (約好后臺回來如jsonp = {...}結構)

    timestamp,// 傳true會加一個時間戳,防止緩存,默許不加

);

    <!DOCTYPE HTML>

<html> 

<head> 

    <meta charset="utf-8"> 

    <title>sjax_0.1.js by snandy</title>

    <script src="/js/sjax_0.1.js"></script>

</head> 

<body>

<p id="p1" ></p>

<input type="button" value="Get Name" onclick="clk()"/>

<script type="text/javascript">

    function clk(){

        Sjax.load(

            'http://lf.yunnanw.cn/', 

            'http://www.lcsyt.com/', 

            'http://www.minnan888.net/', 

            'http://www.vipfuxin.com/', 

            'http://www.qclchina.com/', 

            'http://www.tongxinglong.com/', 

            'http://www.jinanwuliangye.com/', 

            '', 

            function(){

                document.getElementById('p1').innerHTML = 'Hi, ' + jsonp.name;

            }

        );      

    }

</script>

</body>

</html>

    



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女