「案例」vue3.2 + TS 项目中使用 jsonp 插件解决跨域请求
安装 jsonp 插件
npm i jsonp
jsonp 获取数据案例
<script setup lang="ts">
import jsonp from 'jsonp'
import { ref } from 'vue'
const keyword = ref('vue')
const suggestList = ref<string[]>()
// 获取百度关键字列表
const GetSuggestList = () => {
const url = `https://suggestion.baidu.com/su?cb=sug&wd=${keyword.value}`
// fetch 方式(会报跨域错误)
// fetch(url)
// .then((res) => res.json())
// .then((res) => console.log(res))
// jsonp 方式
jsonp(url)
}
// 这里的函数名 sug 要与给到后端的 `cb=sug` 保持一致
window.sug = (data: any) => {
console.log(data)
suggestList.value = data.s
}
GetSuggestList()
</script>
<template>
<header>
<form>
<input type="text" v-model="keyword" />  
<button @click.prevent="GetSuggestList">查询百度关键字列表</button>
<h3>百度关键字列表:</h3>
<ul>
<li v-for="(item, index) in suggestList" :key="index">{{ item }}</li>
</ul>
</form>
</header>
</template>
<style scoped></style>
TS 中,避免报错,还需要定义一下 jsonp 的模块以及在 Window 接口中添加 sug 属性,在根目录的 env.d.ts 文件中定义即可:
/// <reference types="vite/client" />
declare module 'jsonp'
declare interface Window {
sug: (res: any) => void
}
效果展示

代码解释
前端发送请求给后端时,携带了一个参数 cb=sug,后端查询好数据(data)后,就会以 sug(data) 的形式返回给前端,如下图所示:

前端会解析返回的结果并执行 window.sug && window.sug(data),最终,我们定义的 window.sug 方法就会被执行啦。
本文介绍如何在Vue3结合TypeScript项目中利用jsonp插件解决跨域问题,通过实例演示了如何获取百度关键词建议列表。
2070

被折叠的 条评论
为什么被折叠?



