封装jsonp跨域请求

来源:互联网 发布:硬盘linux系统安装教程 编辑:程序博客网 时间:2024/06/07 18:44
(function(window,document,undefined){    // url = http://ssss?dsf=sdfs&    var jsonp = function(url, data, callback) {        // 1.挂载回调函数        var fnSuffix = Math.random().toString().replace('.','');        var cbFuncName = 'my_json_cb_' + fnSuffix;        window[cbFuncName] = callback;        //window.my_json_cb_01234323 = 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] + '&';            // id =          };        // querystring =  ?id=1&name=zhangsan&        //3. 处理url中的回调参数        // url += callback=sdjkjk        querystring += 'callback=' + cbFuncName;        // querystring = ?id=1&name=zhangsan&cb=my_json_cb_012323        //4. 创建一个script标签        var scriptElement = document.createElement('script');        scriptElement.src = url + querystring;        // --注意此时还不能将其append到页面        // 5、将script标签放到页面中        document.body.appendChild(scriptElement);        // append过后页面会自动对这个地址发送请求, 请求完成以后自动执行    };    window.$jsonp = jsonp;})(window, document);