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