类似jquery源码jsonp跨域处理

来源:互联网 发布:windows 10中文包 编辑:程序博客网 时间:2024/05/22 16:49

html页面如下:

<!DOCTYPE html ><html>    <head>        <title></title>    </head>    <body>        <div id="result"></div>        <script src="js/cross.js" type="text/javascript"></script>        <script type="text/javascript">            (function() {                $jsonp('http://api.douban.com/v2/movie/in_theaters', { count: 10, start: 5 },                    function(data) {                        document.getElementById('result').innerHTML = JSON.stringify(data);                    });            })();//            function test(data) {//                document.getElementById('result').innerHTML = JSON.stringify(data);//            }        </script>    </body></html>
Cross.js内容如下:

 (function(window,document){  'use strict';  var jsonp=function(url,data,callback){    //1.挂载回调函数    var cbFunName='my_json_cb'+Math.random().toString().replace(".","");    window[cbFunName]=callback;    //2.将data转换为url字符串的形式    //{id:1,name:'zhangsan'}=>id=1&name=zhangsan    var querystring=url.indexOf("?") == -1 ? "?" : "&";    for(var key in data){      querystring+=key+'='+data[key]+'&';    }    //3.处理url中的回调参数    //url+=callback=my_json_cb3453454365465645    querystring+='callback='+cbFunName;    //4.创建一个script标签    var scriptElement=document.createElement('script');    scriptElement.src=url+querystring;    //5.将script标签放到页面中    document.body.appendChild(scriptElement);  }  window.$jsonp=jsonp;})(window,document)
结果如下:


0 0
原创粉丝点击