Отправка с помощью jQuery ajax объекта, содержащего пустой массив, завершается неудачно - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу отправить с помощью jQuery Ajax PUT на экспресс-сервер Node.js объект, подобный следующему: {value: {tags: []}} Проблема в том, что в обработчике экспресс app.put() значение req.body.value не определено. После некоторого теста я склонен обвинять jQuery, но я не уверен. Единственный обходной путь, который я нашел, - это преобразование пустого массива в массив с невозможным значением, которое я удаляю на сервере. Вот клиент:

<!DOCTYPE html>
<html lang="en-us">
<head>
    <meta charset="utf-8">
    <title>MWE empty array problem</title>
    <script src="jquery-3.3.1.min.js"></script>
</head>
<body>
<button>Push me!</button>
<script>
$("button").on("click", () => {

    $.ajax("http://localhost:4321/", {

        // dataType: "json", // This does not change the result
        // contentType: 'application/json', // Also this does not change the result
        data: {value: {tags: []}},
        // data: {value: {tags: [""]}}, // This works, but it is not what I want
        // data: {value: {tags: [], dummy: ""}}, // This gives an undefined req.body.value.tags
        // data: {value: JSON.stringify({tags: []})}, // This gives an undefined req.body.value.tags
        method: "PUT"
    });
});
</script>
</body>
</html>

И сервер:

"use strict";

// > Load required modules
const express = require("express");
const bodyParser = require("body-parser");

// Initialize application
const app = express();

// PUT Updating document: the action is given as parameter
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({extended: true})); // for parsing application/x-www-form-urlencoded

app.put("/", function(req, res) {

    console.log(req.body.value.tags);

    res.sendStatus(200);
});

// > Serve static pages
app.use("/", express.static(__dirname));

// Start the server
app.listen(4321, () => console.log("Server running on port: 4321"));

Есть идеи?

1 Ответ

0 голосов
/ 04 сентября 2018

Это, вероятно, происходит из-за того, что [] равно 0, и поэтому в нем указано «Не определено»

Я нашел только изображение юмора, чтобы описать его

Лучший способ решить эту проблему, вероятно, состоит в том, чтобы проверить, равно ли значение reg.body.value нулю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...