使用Vue怎么解决跨域请求问题?

在使用vue前先看原生js解决跨域

使用的接口:http://suggestion.baidu.com/su?cb=qq&wd=哈哈
body内容:

 <input type="text">
    <button>提交</button>
    <ul></ul>
    <script>
    //查找对应的表单元素
        var ipt = document.getElementsByTagName("input")[0];
        var btn = document.getElementsByTagName("button")[0];
        var oul = document.getElementsByTagName("ul")[0];
	//给btn添加点击事件
        btn.onclick = function () {
       		//当点击按钮的时候利用script的src属性提交请求→新建一个script标签
            var s = document.createElement("script");
            //给这个标签的src属性赋值 赋值时在wd后面的参数是需要查找的关键字,这个值是用户在input中输入的值
            s.src = `http://suggestion.baidu.com/su?cb=callback&wd=${ipt.value}`
            //最后将这个script标签添加到body中
            document.body.append(s)
        }
	//在src中提交的接口连接中有一个回调函数,需要自己来设置
        function callback(res) {
        	//在这个回到函数中的res参数是传递过来搜索到的结果
            for (let i = 0; i < res.s.length; i++) {
            	//循环遍历并创建li标签
                var li = document.createElement("li");
                //给li中添加查找到的内容
                li.innerHTML = res.s[i];
                //将li添加到ul中
                oul.append(li)
            }
        }
    </script>

上述代码就可以实现一个简单的跨域请求,这是以原生js的方法实现的

使用vue来模拟一个跨域请求

解决跨域请求的核心是用script标签的src,script的请求时不受限制的
使用的接口:http://suggestion.baidu.com/su?cb=qq&wd=哈哈

<body>
    <div id="app">
        <input type="text" v-model="ipt">
        <button @click="submit()">提交</button>
        <ul>
        	//for循环遍历result中的数据 {{val}}显示遍历的数据
            <li v-for="(val, index) in result" :key="index">{{val}}</li>
        </ul>
    </div>

    <script>
    	//将实例化的vue存储
        var vue = new Vue({
            el: "#app",
            data: {
                ipt: "",
                result: []
            },
            methods: {
                submit() {
                	//这里步骤与原生js一样操作
                    var s = document.createElement("script");
                    s.src = `http://suggestion.baidu.com/su?cb=callback&wd=${this.ipt}`
                    document.body.append(s)
                }
            },
        })

        function callback(res) {
        //vue中的result属性是查找到数据的长度,将res.s返回的数据存入
            vue.result = res.s
        }
    </script>
</body>

总结步骤:

  • 创建一个script标签
  • 设置script标签的src属性
  • 把script标签追加到body内
  • 设置回调函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值