当前位置:Gxlcms > JavaScript > JSONP实现

JSONP实现

时间:2021-07-01 10:21:17 帮助过:18人阅读

使用jsonp实现跨域获取数据。

js部分

(function(window, document) {
    'use strict';
    var jsonp = function(url, data, callback) {
        //1、挂载回调函数
        var fnsuffix = Math.random().toString().replace('.', '');
        var cbFuncName = 'my_json_cb' + fnsuffix;
        window[cbFuncName] = callback;
        //2、将data转换成url字符串的形式
        //{id=1,count=4}==>id=1&count=4
        var querystring = url.indexOf('?') == -1 ? '?' : '&';     //判断url中最后是否有?,没有则为?
        for (var key in data) {
            querystring += key + '=' + data[key] + '&';
        }
        //3、处理url中回调函数 url+=callback=sdgade
        querystring += 'callback=' + cbFuncName;
        //querystring=?id=1&count=4&callback=sdgade
        //4、创建一个script标签
        var scriptElement = document.createElement('script');
        scriptElement.src = url + querystring;
        //5、把script标签放到页面上
        document.body.appendChild(scriptElement);
    };
    window.$jsonp = jsonp;
})(window, document)

在页面中测试

<!DOCTYPE html>
<html>
<head>
    <title>jsonp</title>
</head>
<body>
    <div id="htt"></div>
    <script type="text/javascript" src="http.js"></script>
    <script>
        (function(){
            $jsonp('http://api.douban.com/v2/movie/in_theaters',{},    
                function(data){
                    document.getElementById('htt').innerHTML=JSON.stringify(data);
                });
        })()
    </script>
</body>
</html>

结果可以返回结果,页面显示为,表示获取成功!

JSONP实现


更多JSONP实现相关文章请关注PHP中文网!

人气教程排行