提取POST到/ send会返回404错误(邮递员没有错误)

时间:2019-09-05 11:08:09

标签: javascript node.js express fetch-api

当用户单击表单上的“提交”按钮时,我正在尝试将一些数据上传到学校数据库。我已经设置了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页错误: 404 error image

1 个答案:

答案 0 :(得分:-2)

删除let server变量并保留app.listen(8080),以使最终结果为

app.listen(8080, () => console.log('Server is running'));