基于AJAX的联级菜单三级,不使用PHP
时间: 2024-02-11 10:08:05 浏览: 68
ajax三级联动下拉菜单效果
好的,我可以为您提供一个基于 AJAX 的三级联动菜单,不需要使用 PHP。
首先,我们需要编写 HTML 代码来创建三个下拉列表:
```html
<select id="first">
<option value="">请选择</option>
<option value="1">选项1</option>
<option value="2">选项2</option>
<option value="3">选项3</option>
</select>
<select id="second">
<option value="">请选择</option>
</select>
<select id="third">
<option value="">请选择</option>
</select>
```
然后,我们需要编写 JavaScript 代码来实现 AJAX 请求和更新下拉列表。首先,我们需要为第一个下拉列表添加一个 onchange 事件,当用户选择一个选项时,我们会发送一个 AJAX 请求来获取与所选选项相关的第二个下拉列表的选项。
```javascript
var xhr = new XMLHttpRequest();
var first = document.getElementById('first');
var second = document.getElementById('second');
var third = document.getElementById('third');
first.onchange = function() {
// 清空第二个和第三个下拉列表
second.innerHTML = '<option value="">请选择</option>';
third.innerHTML = '<option value="">请选择</option>';
// 发送 AJAX 请求
xhr.open('GET', '/getSecondOptions?first=' + encodeURIComponent(first.value), true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
// 更新第二个下拉列表
var options = JSON.parse(xhr.responseText);
for (var i = 0; i < options.length; i++) {
var option = document.createElement('option');
option.value = options[i].value;
option.innerHTML = options[i].label;
second.appendChild(option);
}
}
};
xhr.send();
};
```
我们还需要编写一个用于获取第三个下拉列表选项的函数。当用户选择第二个下拉列表的选项时,我们会发送另一个 AJAX 请求来获取与所选选项相关的第三个下拉列表的选项。
```javascript
function getThirdOptions() {
// 清空第三个下拉列表
third.innerHTML = '<option value="">请选择</option>';
// 发送 AJAX 请求
xhr.open('GET', '/getThirdOptions?second=' + encodeURIComponent(second.value), true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
// 更新第三个下拉列表
var options = JSON.parse(xhr.responseText);
for (var i = 0; i < options.length; i++) {
var option = document.createElement('option');
option.value = options[i].value;
option.innerHTML = options[i].label;
third.appendChild(option);
}
}
};
xhr.send();
}
second.onchange = getThirdOptions;
```
最后,我们需要在服务器端实现两个路由来处理 AJAX 请求。这里我们使用 Node.js 和 Express 框架来实现。路由代码如下:
```javascript
var express = require('express');
var app = express();
app.get('/getSecondOptions', function(req, res) {
var first = req.query.first;
var options = [];
if (first === '1') {
options.push({ value: '1-1', label: '选项1-1' });
options.push({ value: '1-2', label: '选项1-2' });
} else if (first === '2') {
options.push({ value: '2-1', label: '选项2-1' });
options.push({ value: '2-2', label: '选项2-2' });
} else if (first === '3') {
options.push({ value: '3-1', label: '选项3-1' });
options.push({ value: '3-2', label: '选项3-2' });
}
res.send(JSON.stringify(options));
});
app.get('/getThirdOptions', function(req, res) {
var second = req.query.second;
var options = [];
if (second === '1-1') {
options.push({ value: '1-1-1', label: '选项1-1-1' });
options.push({ value: '1-1-2', label: '选项1-1-2' });
} else if (second === '1-2') {
options.push({ value: '1-2-1', label: '选项1-2-1' });
options.push({ value: '1-2-2', label: '选项1-2-2' });
} else if (second === '2-1') {
options.push({ value: '2-1-1', label: '选项2-1-1' });
options.push({ value: '2-1-2', label: '选项2-1-2' });
} else if (second === '2-2') {
options.push({ value: '2-2-1', label: '选项2-2-1' });
options.push({ value: '2-2-2', label: '选项2-2-2' });
} else if (second === '3-1') {
options.push({ value: '3-1-1', label: '选项3-1-1' });
options.push({ value: '3-1-2', label: '选项3-1-2' });
} else if (second === '3-2') {
options.push({ value: '3-2-1', label: '选项3-2-1' });
options.push({ value: '3-2-2', label: '选项3-2-2' });
}
res.send(JSON.stringify(options));
});
app.listen(3000);
```
以上就是一个基于 AJAX 的三级联动菜单的实现方法,不需要使用 PHP。希望能对您有所帮助。
阅读全文