Я не могу получить свой Ajax JQuery Post Request для правильной отправки объекта? - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь выполнить POST-запрос, но мой Сервер постоянно сообщает мне, что я не отправляю значения правильно?

Это проверяет наличие обязательных полей и возвращает ошибку, если она отсутствует, постоянно повторяет, что имя отсутствует в теле запроса.

Это на моем роутере:

router.post('/', jsonParser, (req, res) => {
  const requiredFields = ['name', 'size', 'prices'];
  for (let i = 0; i < requiredFields.length; i++) {
    const field = requiredFields[i];
    if (!(field in req.body)) {
      const message = `Missing \`${field}\` in request body`;
      console.error(message); // responds missing `name` in request body
      return res.status(400).send(message);
    }
  }

  StoredProduct.create({
    name: req.body.name,
    size: req.body.size,
    prices: req.body.prices
  }).then(item => {
    res.status(201).json(item);
  }).catch(err => {
    console.log(err);
    res.status(500).json({
      error: err
    });
  });

});

И тогда это мой запрос AJAX:

$('#addItemButton').on('click', function() {
  console.log($addProductName.val()); //works correctly
  console.log($addProductUnit.val()); //works correctly 
  console.log($addPrice1.val()); //works correctly
  console.log($addPrice2.val()); //works correctly
  console.log($addPrice3.val()); //works correctly
  var newProd = {
    name: $addProductName.val(),
    size: $addProductUnit.val(),
    prices: [{
        price: $addPrice1.val()
      },
      {
        price: $addPrice2.val()
      },
      {
        price: $addPrice3.val()
      }
    ]
  };

  $.ajax({
    type: 'POST',
    url: '/storedproducts',
    data: newProd,
    success: function(newProd) {
      console.log(`${newProd} created`);
    },
    error: function() {
      alert(`didn't work item: ${newProd}`); // responds didn't work item: [object Object]
    }
  });

});

Ответ сервера - 400 (неверный запрос), и в журналах моего сервера он показывает "Missing имя in request body

1 Ответ

0 голосов
/ 08 ноября 2018

Я использую body-parser, и мне нужно было добавить следующее в мой основной файл server.js для правильной отправки данных.

app.use (bodyParser.urlencoded ({extended: true})); app.use (bodyParser.json ());

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