当用户单击表单上的“提交”按钮时,我正在尝试将一些数据上传到学校数据库。我已经设置了server.js,它可与Postman一起使用。但是,当我尝试在按钮单击上获取(POST)数据时,在浏览器控制台中出现404错误。
由于某种原因,如果服务器已经在运行,我也无法打开html文件。我不知道这是否相关。
我仔细检查了将客户端提取和服务器端app.post()连接在一起的每个字符串。我还检查了使用Postman中的相同文本,是否接受了从我的应用程序发送的JSON数据。这可行。我也尝试过查看类似的帖子,但是没有人遇到完全相同的问题(据我所知)。
这是我的server.js:
let express = require("express");
let mysql = require("mysql");
let bodyParser = require("body-parser");
let app = express();
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
let pool = mysql.createPool({
connectionLimit: 2,
host: "---",
user: "---",
password: "---",
database: "---",
debug: false
}
);
app.post("/send", (req, res) => {
console.log("Received Post from client");
pool.getConnection((err, connection) => {
if (err) {
console.log("Connection error");
res.json({ error: "connection error" });
} else {
console.log("Connection established");
console.log(req.body);
let val = [req.body.some_value];
console.log(val);
connection.query(
"insert into some_table (some_value) values (?)",
val,
err => {
if (err) {
console.log(err);
res.status(500);
res.json({error: "Insertion error"});
} else {
console.log("Insertion OK!");
res.send("");
}
}
);
}
});
});
let server = app.listen(8080);
console.log("Server running");
我的客户(sendButton.js):
document.getElementById("submit").addEventListener("click", function(){
let data = {some_value: document.getElementById("some_value_input")};
console.log(JSON.stringify(data));
fetch("http://localhost:8080/send", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(data)
})
.then(function(response){
alert("We're trying");
if (response.ok){
console.log("Data uploaded");
return;
}
throw new Error("Data not uploaded");
})
.catch(function(error){
console.log(error);
});
});
HTML按钮只是ID为“ submit”的标准按钮。
我的预期结果:插入成功,将值正确发送到数据库。
实际结果:找不到404页错误:
答案 0 :(得分:-2)
删除let server
变量并保留app.listen(8080)
,以使最终结果为
app.listen(8080, () => console.log('Server is running'));