<!DOCTYPE html>
<html lang="en">
<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>
<div id="app">
星球:
<select @change="changeXq" v-model="xqVal">
<option :value="item" v-for="item in xqArr">{{item}}</option>
</select>
什么洲:
<select>
<option :value="item" v-for="item in zhouArr">{{item}}</option>
</select>
</div>
<script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js'></script>
<script src='https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js'></script>
<script>
new Vue({
el: "#app",
created() {
//当页面创建后执行 getXq() 函数
this.getXq();
},
data() {
return {
//获取到第一个下拉框的后台值存进来
xqArr: [],
//下拉框发生变化时 查看选中的是哪个球
xqVal: "",
//获取到第二个下拉的后台值存起来
zhouArr: [],
}
},
methods: {
getXq: function () {
//创建一个Promise实例
new Promise(function (resolve, reject) {
//ajax获取请求 成功的时候执行哪些操作 失败的时候执行哪些操作
$.ajax({
//获取第一选项中的星球有哪些
url: "./xq.json",
success: function (res) {
resolve(res)
},
error: function (err) {
reject(err)
}
})
})
.then(res => {
//获取成功之后把值给到 xqArr
this.xqArr = res.xqArr;
})
},
//下拉框的值发生变化时执行的操作
changeXq() {
//当点击的值是地球时执行的操作
if (this.xqVal == "地球") {
new Promise(function (resolve, reject) {
$.ajax({
url: "./dqzhou.json",
success: function (res) {
resolve(res)
},
error: function (err) {
reject(err)
}
})
})
//把从后台获取到的值给到zhouArr
.then(res => {
this.zhouArr = res.dqzhou;
})
}
//当点击的值是月球时执行的操作
if (this.xqVal == "月球") {
new Promise(function (resolve, reject) {
$.ajax({
url: "./yqzhou.json",
success: function (res) {
resolve(res)
},
error: function (err) {
reject(err)
}
})
})
.then(res => {
//把从后台获取到的值给到zhouArr
this.zhouArr = res.yqzhou;
})
}
}
},
})
</script>
</body>
</html>
xq.json文件内容
{
"xqArr": ["地球", "月球"]
}
dqzhou.json文件内容
{ "dqzhou": ["亚洲", "非洲", "美洲"] }
yqzhou.json内容
{ "yqzhou": ["陨石", "嫦娥", "玉兔"] }