Как я могу получить данные из запроса post?

#html #node.js #express #ejs

Вопрос:

Что я пытаюсь сделать, так это опубликовать данные с того же сайта и создать на нем новый заказ (при нажатии кнопки «Отправить»). У меня нет никакой информации в моем теле, я подозреваю, что в моих ejs что-то пошло не так, любые отзывы очень ценятся.

Мой файл ejs:

 
<h1>Orders</h1>

<p>Orders from Coffee eShop.</p>

<pre><%#= JSON.stringify(res, null, 4) %></pre>
<form class="label-left" method="post">
    <table>
        <tr>
            <th>Order ID </th>
            <th>Customer ID </th>
            <th>Name </th>
            <th>Date </th>
            <th>Product quantity </th>
            <th>Status </th>
        </tr>
    <% for (const row of res) { %>
        <tr>
            <td><%= row.order_id %></td>       <!-- trying to post this -->
            <td><%= row.customer_id %></td>    <!-- trying to post this -->
            <td><%= row.customer_name %></td>  <!-- trying to post this -->
            <td><%= row.order_date %></td>     <!-- trying to post this -->
            <td><%= row.produkter_antal %></td><!-- trying to post this -->
            <td><%= row.order_status %></td>   <!-- trying to post this -->
        </tr>
    <% }; %>
    </table>
    <br>
    <td><input type="submit" name="doit" value="Create new order"></td> <!-- trying to get this work -->
    <br><br>
    <a href="/eshop/customer" id="customerlink">Customers</a>
</form>
<br>

<%- include("footer"); %>
 

и мой файл js:

 router.get("/order/:id", async (req, res) => {
    let id = req.params.id;
    let data = {
        title: `Customers order ${id} ${sitename}`,
        ordernummer: id
    }

    data.res = await bank.showCustomerOrder(id);

    res.render("eshop/order", data);
});

router.post("/order/:id", urlencodedParser, async (req, res) => {
    console.log(req.body);
    // this doesnt work... I dont get any info in req.body here
});
 

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

1. Я не уверен, что понимаю; как вы пытаетесь это ОПУБЛИКОВАТЬ? Я вижу a <form> без полей ввода.

2. Спасибо тебе, вот почему.

Ответ №1:

Только успешные элементы управления формой ( input , button , textarea , select ) будут предоставлять данные для отправки формы.

Единственный элемент управления формой, который у вас есть, — это кнопка «Отправить», но, поскольку у нее нет name атрибута, она не будет успешной.

Добавьте некоторые элементы управления формой (возможно, вам понадобятся некоторые <input type="hidden" ...> элементы).

Вы можете найти руководство по формам MDN полезным, а также руководство по использованию форм с помощью Express.

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

1. Спасибо за быстрый ответ, я знал, что с моим файлом ejs что-то не так, и это объясняет, почему