【发布时间】:2022-01-11 03:47:03
【问题描述】:
所以,我正在尝试从按钮创建一个 JSON 文件,并且我能够从我创建的 JSON 文件中检索数据,但是我无法使用 XMLHTTPRequest 和/或 Ajax 向它们发布。我可以使用仅使用 url 的路由添加到 JSON 文件,但我不知道如何为以下代码设置路由。
(另外,似乎无论我做什么,我总是收到一个 '405 错误消息 - 方法不允许。我已通过 Google Chrome 设置安全性授予该站点的权限,并且我已经下载了 NPM 的所有包Cors 和 Body-Parser。)
我在做什么让我不断收到 405 错误,我是否需要创建一个通常用于表单添加数据的路由?
任何建议将不胜感激。谢谢!
服务器.js
var express = require('express');
var app = express();
var bodyParser = require('body-parser')
var cors = require("cors");
// PORT CONNECTION
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log(`Server Port: ${PORT}`);
});
//PUBLIC FOLDER
app.use(express.static('public'));
// parse application/json
var jsonBP = app.use(bodyParser.json());
app.use(function (req, res) {
res.setHeader('Content-Type', 'application/json');
});
// POST /api/users gets JSON bodies
app.post('/api/actions', jsonBP, function (req, res) {
buttons.response
});
//CORS
app.use(cors());
Javascript:
for (i = 0; i < facialExpressions.length; i++) {
var CreateButton = document.createElement("button");
var section = "Facial Expressions";
CreateButton.innerText = facialExpressions[i];
document.getElementById("facial").appendChild(CreateButton);
CreateButton.addEventListener("click", function (e) {
e.preventDefault();
var params = JSON.stringify({
action: this.innerHTML,
date: Date(),
section: "Facial Expressions",
videoID: videoID,
username: username
});
console.log(params);
xhr.open("post", "./db/actions.json", true);
xhr.setRequestHeader("Content-Type", "application/json");
console.log('READYSTATE: ', xhr.readyState);
xhr.onreadystatechange = () => {
if(xhr.readyState == 4 && xhr.status ===201){
let object = JSON.parse(xhr.response);
console.log(object);
}
}
//Sends Request
xhr.send(encodeURIComponent(params));
});
}
HTML
</br></br>
<p id="status"></p>
<table>
<tr>
<td width="10%">
<h3>Facial Expressions</h3>
</td>
<td width="50%">
<h3>Video</h3>
</td>
<td width="40%">
<h3>Physical Actions</h3>
</td>
</tr>
<tr>
<td>
<div id="facial"></div>
</td>
<td>
<div id="videoPlayer"></div>
<div>
<button id="start">Start</button>
</div>
</td></tr>
<tr>
<td colspan="3">
<div id="actions"></div>
</td>
</tr>
</tr>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="../script.js"></script>
【问题讨论】:
标签: javascript ajax npm xmlhttprequest