使用button的计算器页面,浏览器端点击button请求计算,服务器使用axios返回结果给浏览器端,请详细说明
时间: 2024-03-24 21:36:56 浏览: 15
好的,这个问题我可以回答。首先,我们可以使用与上一个问题相同的 HTML 和 JavaScript 代码来创建一个计算器界面,其中每个 `button` 被点击时都会将输入添加到一个数组中,并在点击 `=` 号时使用 `axios` 发送一个 POST 请求到服务器端。
接下来,我们需要在服务器端编写一个能够处理这个 POST 请求的 API。我们可以使用 Node.js 和 Express 框架来创建一个简单的 API,代码如下:
```javascript
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
// 使用 body-parser 中间件来解析请求体
app.use(bodyParser.json());
// 处理 POST 请求
app.post('/calculate', (req, res) => {
const inputs = req.body.inputs;
const result = calculate(inputs);
res.json({ result });
});
// 计算结果的函数
function calculate(inputs) {
let result = 0;
let operator = '+';
for (const input of inputs) {
if (['+', '-', '*', '/'].includes(input)) {
operator = input;
} else {
const number = parseFloat(input);
if (operator === '+') {
result += number;
} else if (operator === '-') {
result -= number;
} else if (operator === '*') {
result *= number;
} else {
result /= number;
}
}
}
return result;
}
// 监听端口
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
```
这里的 API 监听了 `/calculate` 路径的 POST 请求,并使用 `calculate` 函数来计算结果。注意,我们使用了 `body-parser` 中间件来解析请求体,这是因为浏览器端发送的请求体是 JSON 格式的。
最后,在浏览器端,我们可以使用 `axios` 来发送 POST 请求,并在请求成功后将结果显示在计算器界面上。代码如下:
```javascript
const buttons = document.querySelectorAll('button');
const result = document.querySelector('.result');
let inputs = [];
// 为每个 button 添加点击事件
buttons.forEach(button => {
button.addEventListener('click', () => {
const value = button.textContent;
if (value === '=') {
// 发送 POST 请求,计算结果并显示在 result 中
axios.post('/calculate', { inputs })
.then(response => {
result.textContent = response.data.result;
inputs = [];
})
.catch(error => {
console.error(error);
});
} else {
// 将输入添加到数组中
inputs.push(value);
}
});
});
```
这里的 `axios.post` 方法会发送一个 POST 请求到 `/calculate` 路径,并将输入的数组作为请求体发送到服务器端。在请求成功后,我们可以通过 `response.data.result` 获取到服务器端返回的计算结果,并将其显示在计算器界面上。