天天看点

跨域问题处理之jsonp封装

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 封装jsonp方法
        function jsonp({url,params,cb}){
            return new Promise((resolve,reject)=>{
                window[cb] = function (data) {
                    resolve(data);
                    document.body.removeChild(script)
                }
                params = {...params,cb}
                let arrs  = []
                for(let key in params){
                    arrs.push(`${key}=${params[key]}`)
                }
                let script = document.createElement('script');
                script.src = `${url}?${arrs.join('&')}`
                document.body.appendChild(script)
            })
        }
        jsonp({
            url:'https://www.baidu.com/sugrec?pre=1&p=3&ie=utf-8&json=1&prod=pc&from=pc_web&sugsid=34130,33801,31254,34004,33607,34135,26350&wd=as&req=2&bs=d%27j%27sa%27f&csor=2&pwd=',
            params:{wd:'b'},
            cb:'show'
        }).then(data=>{
            console.log(data)
        })
    </script>
</body>
</html>
           
js