javascript - 如果 JSON 中的键有空值,则发送错误状态(AJAX、Node 和 Express)

标签 javascript ajax node.js express

这是我想要实现的流程:

  • 使用 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/

相关文章:

ruby-on-rails - Rails : making link_to method send remote request as JSON type, 不是 JS 类型

javascript - 在javascript中跨域发布二进制数据

node.js - Express如何知道这条路由?

javascript - 在另一个 JavaScript 应用程序中运行 Node 应用程序

javascript - 在访问属性之前检查对象是否不为空

javascript - 如何在laravel中使用jquery ajax保存多个表单数据?

javascript - Sprite 图标机制如何工作?

javascript - 不能使用 angular ajax,因为它显示 No 'Access-Control-Allow-Origin' 。但是可以使用 xmlhttprequest 和 jquery 3x 来做到这一点

node.js - 在服务器和客户端之间传输图像的最佳方式是什么?

javascript - 从 javascript 函数获取类方法