• Jsonp的使用


    Jsonp的使用

    对于跨域请求,我们就可以使用 jsonp 来完成,依据script标签没有同源策略的限定,就能使用。

    这里,主要是讲封装一个jsonp请求的函数

    jsonp包地址(github),这里面解释了jsonp的使用

    安装:

    npm install jsonp

    使用:

    import jsonp from 'jsonp'
    
    /**
     * 使用jsonp这个包,需要传递三个参数:
     * JSONP(url,options,fn)
     *  url: 获取数据的详细路由
     *  options: 参数 (可选参数)
     *  fn: 回调函数(是否成功获取数据,回调)
     */
    

    拼接URL地址的函数:

    utils.js

    //一般来说,我们使用URL:包括一个根路由,query等
    //所以,我们就需要拼接一个完整的url
    
    export function connectUrl(data) {
        let url = ''
        for(let k in data) {
            let value = data[k] !== undefined ? data[k] : ''
            url += `&${k}=${encodeURIComponent(value)}`   //使用的es6的模板字符串的用法 ${}
        }
        return url ? url.substring(1) : '' //这里主要判断data是否为空
    }
    

    封装jsonp的请求函数

    jsonp.js

    import jsonp from 'jsonp'
    import { connectUrl } from './utils'
    
    //封装一个jsonp的函数
    /**
     *
     * @param url: 根路径
     * @param data: 参数(相当于query)
     * @param options  选项(基本不用)
     * @returns {Promise<unknown>}   放回一个promise对象
     */
    export default function getJsonpData(url, data, options) {
        //拼接字符串(根路径 + 参数),看根路径是否包含 ‘?’
        url += ( url.indexOf('?') < 0 ? '?' : '&' ) + connectUrl(data)
    
        return new Promise( (resolve, reject) => {
            jsonp(url, options, (err, data) => {
                if(!err) {
                    resolve(data)
                } else {
                    reject(err)
                }
            })
        })
    }
    
  • 相关阅读:
    读《大道至简》第6章有感
    Java作业05(动手动脑)
    读《大道至简》第五章有感
    java作业04(动手动脑)
    域名与主机名
    STL 迭代器学习
    数组与链表增删改查效率比较
    智能指针多线程安全问题
    快速乘 学习
    关于TCP三个冗余ACK启动快速重传
  • 原文地址:https://www.cnblogs.com/xyf724/p/13233290.html
Copyright © 2020-2023  润新知