Если в JSON есть пустое значение для ключа, отправьте статус ошибки (AJAX, Node и Express).

#javascript #ajax #node.js #express

#javascript #аякс #node.js #выражать

Вопрос:

Вот поток, которого я пытаюсь достичь:

  • Используйте AJAX для отправки объекта на узел / Экспресс-сервер
  • На стороне сервера, JSON.stringify объект в данных запроса
  • Это важная часть: если значение "task" ключа пустое / ложное (т.Е. «»), отправьте статус ответа на стороне клиента (например res.sendStatus(403) )
    • Проблема заключается в том, что серверный if блок (указанный в комментарии ниже) не запускается

Сообщение AJAX на стороне клиента (main.js ):

 $.post("/add-tasks", userToDo);
 

Объект userToDo, отправляемый на стороне сервера:

 userToDo = {
task = string;
important = boolean;
urgent = boolean;
quadrant = int; // 1 - 4
}
 

Пример stringified 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");
 

Комментарии:

1. Почему вы используете JSON.stringify в этом тесте? Он преобразует пустую строку в строку, содержащую "" значение, которое не является false. Просто проверь if (!req.body.task)

2. @jcaron Ах, спасибо тебе! В этом есть полный смысл.

Ответ №1:

Попробуй это:

 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"]);