Итак, я получил этот JavaScript, который должен отправлять некоторые данные с PUT на мой сервер с помощью ajax.
var payload = 'id=' + id + '&brand=' + brand + '&model=' + model + '&country=' + country + '&number=' + number + '&alkohol=' + alkohol + '&volume=' + volume + '&price=' + price + '&comment=' + comment;
var fixedPayload = payload.split(' ').join('+'); // replace blanks with +
$.ajax({
type: 'PUT',
url: 'http://localhost:3000/drinks/' + fixedPayload,
// data: fixedPayload, this does not work either
success: function (data) {
alert('Update was successfull!');
}
});
Это на сервере
app.put('drinks/:id', (req, res) => {
let id = req.params.id;
var data = {
brand: req.body.brand,
model: req.body.model,
country: req.body.country,
number: req.body.number,
alkohol: req.body.alkohol,
volume: req.body.volume,
price: req.body.price,
comment: req.body.comment
};
Drink.findByIdAndUpdate(id, data, function(err, drink) {
if (err) throw err;
res.send('Drink updated - '+drink.model);
});
});
Это то, что я получаю
jquery-3.3.1.min.js: 2 PUT http://localhost:3000/drinks/?5c1b873a6a0a5d3ae0342f01&brand=L%C3%A4sk&model=Cola&country=Sverige&number=999&alkohol=0%&volume=33+cl&price=20&comment=Cola+asd 404 (не найдено)
Console.log (fixedPayload)
? 5c1b873a6a0a5d3ae0342f01 & brand = Läsk & model = Cola & country = Sverige & number = 999 & alkohol = 0% & volume = 33 + cl & price = 20 & comment = Cola + asd
В чем проблема?Я также пытался отправить объект вместо строки, но с тем же результатом
Решено
AJAX
package = {
brand: brand,
model: model,
country: country,
number: number,
alkohol: alkohol,
volume: volume,
price: price,
comment: comment
};
$.ajax({
type: 'PUT',
url: `http://localhost:3000/drinks/${id}`, // changed it here
data: package,
success: function (data) {
alert('Update was successfull!');
window.location = "http://localhost:3000/";
}
});