这是我想要实现的流程:
- 使用 AJAX 将对象发送到 Node/Express 服务器
- 服务器端,
JSON.stringify
请求数据中的对象 - 这是重要的部分:如果
“task”
键的值为空/false(即“”),则向客户端发送响应状态(例如res.sendStatus(403)
)- 问题是服务器端
if
block (如下面的注释所示)未运行
- 问题是服务器端
客户端 AJAX 帖子 (main.js):
$.post("/add-tasks", userToDo);
userToDo 对象发送到服务器端:
userToDo = {
task = string;
important = boolean;
urgent = boolean;
quadrant = int; // 1 - 4
}
字符串化 JSON 示例:
{"task":"","important":"true","urgent":"false","quadrant":"2"}
服务器端 JS (app.js) -- 重要的代码片段由注释表示:
var express = require("express");
var app = express();
var bodyParser = require("body-parser");
var fs = require("fs");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(function(req, res, next) {
console.log(`${req.method} request for '${req.url}' - ${JSON.stringify(req.body)}`);
next();
});
app.use(express.static("./public"));
app.post("/add-tasks", function(req, res) {
// ********* HERE **********
if ( !JSON.stringify(req.body["task"]) ) {
res.sendStatus(403);
} else {
fs.appendFile("tasks.json", JSON.stringify(req.body));
}
});
app.listen(3000);
console.log("Express is running on port 3000");
最佳答案
试试这个:
if (!req.body["task"]) {
res.sendStatus(403);
} else {
fs.appendFile("tasks.json", JSON.stringify(req.body));
}
var your_object = {"task":"","important":"true","urgent":"false","quadrant":"2"};
console.log(!JSON.stringify(your_object["task"]));
var your_object = {"task":"hello","important":"true","urgent":"false","quadrant":"2"};
console.log(!JSON.stringify(your_object["task"]));
var your_object = {"task":"","important":"true","urgent":"false","quadrant":"2"};
console.log(!your_object["task"]);
var your_object = {"task":"hello","important":"true","urgent":"false","quadrant":"2"};
console.log(!your_object["task"]);
关于javascript - 如果 JSON 中的键有空值,则发送错误状态(AJAX、Node 和 Express),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40063528/