vue项目中使用jsonp跨域请求百度联想接口

一. 内容简介

vue项目中使用jsonp跨域请求百度联想接口

二. 软件环境

2.1 Visual Studio Code 1.75.0

2.2 chrome浏览器

2.3 node v18.14.0

三.主要流程

3.1 代码

核心代码

	// 这个是请求函数
    doLeno() {
      // 挂载回调函数,不挂载,会报不存在
      window.callback = this.callback;
      const script = document.createElement("script");
      if (this.word !== "") {
      // 接口里面写了回调函数
        var url = "https://suggestion.baidu.com/su?cb=callback&wd=" + this.word;
        script.src = url;
      }
      // 这是挂载script
      document.body.appendChild(script);
      // 挂完要清一下,不然页面都是script标签
      script.remove();
    },
    // 回调函数
    callback(res) {
      console.log(res.s);
      this.Leno = res.s;
      
   
    },
      beforeDestroy() {
      // 删除注册的函数
     delete window.callback;}, //生命周期 - 销毁之前

完整代码

<!--  -->
<template>
  <div class="container">
    <form action="/">
      <van-search
        v-model="word"
        shape="round"
        background="#4fc08d"
        show-action
        placeholder="请输入搜索关键词"
        @search="onSearch"
        @cancel="$router.back()"
        @input="doLeno"
      />
    </form>
    <div v-if="isSearch">
      <van-cell
        v-for="i in Search"
        :key="i.id"
        :title="i.title"
        icon="search"
      />
    </div>

    <div v-if="isLeno">
      <van-cell v-for="i in Leno" :key="i.id" :title="i" icon="search" />
    </div>

    <div></div>
  </div>
</template>

<script>
import axios from "axios";
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';

export default {
  //import引入的组件需要注入到对象中才能使用
  name: "",
  props: {},
  components: {},
  data() {
    //这里存放数据
    return {
      word: "",
      isSearch: false,
      isLeno: true,
      Search: [],
      Leno: [],
    };
  },
  //监听属性 类似于data概念
  computed: {},
  //监控data中的数据变化
  watch: {},
  //方法集合
  methods: {
    callback(res) {
      console.log(res.s);
      this.Leno = res.s;
    },
    onSearch() {},
    doLeno() {
      window.callback = this.callback;
      const script = document.createElement("script");
      if (this.word !== "") {
        var url = "https://suggestion.baidu.com/su?cb=callback&wd=" + this.word;
        script.src = url;
      }
      document.body.appendChild(script);
      script.remove();
    },
  },
  //生命周期 - 创建完成(可以访问当前this实例)
  created() {},
  //生命周期 - 挂载完成(可以访问DOM元素)
  mounted() {},
  beforeCreate() {}, //生命周期 - 创建之前
  beforeMount() {}, //生命周期 - 挂载之前
  beforeUpdate() {}, //生命周期 - 更新之前
  updated() {}, //生命周期 - 更新之后
  beforeDestroy() {
     delete window.callback;}, //生命周期 - 销毁之前
  destroyed() {}, //生命周期 - 销毁完成
  activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
};
</script>
<style lang='less' scoped>
//@import url(); 引入公共css类
.container {
  width: 100%;
  height: 100vh;
  display: flex;
  flex-direction: column;
  font-family: Arial, Helvetica, sans-serif;
}
</style>

3.2 结果展示

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值