Ajax的Jquery PUT请求不起作用

我试图发送一个使用jQuery的Ajax PUT请求到我的服务器,但是当我通过我的成功函数返回的数据console.log ,我得到了我想要更新的相同的数据。

这里是我的Ajax请求:

 $(".plus-button").on("click", function() { var handler = $(this).siblings(".editIngredientForm"); var formData = { photoName: handler.children("#numberOfItems").prevObject[0][0]["value"], name: handler.children("#numberOfItems").prevObject[0][1]["value"], // Add + 1 to number of items in ingredient to account for the clicking on plus sign number: Number(handler.children("#numberOfItems").prevObject[0][2]["value"]) + 1, }; var actionUrl = $(this).siblings(".editIngredientForm").attr("action"); // console.log(formData); $.ajax({ url: actionUrl, data: formData, type: "PUT", success: function(data) { console.log(data); } }) }); 

这里是处理更新的后端路由(Node JS):

 app.put("/inventory/:id", isLoggedIn, function(req, res) { Ingredient.findByIdAndUpdate(req.params.id, req.body.item, { new: true }, function(err, updatedIngredient) { if (err) { console.log(err); } else { if (req.xhr) { res.json(updatedIngredient); } else { req.flash("success", "You successfully updated the Ingredient's info"); res.redirect("/inventory/" + req.params.id); } } }) }) 

有谁知道我在做什么错?

这是我最终find的解决scheme:

 $(".plus-button").on("click", function(){ var handler = $(this).siblings(".editIngredientForm"); var oldNumber = handler.find('input[name="item[number]"]').val(); var newNumber = Number(oldNumber) + 1; var numberOfIngredient = $(this).parent("#changeQuantitiesButtons").siblings("#state-of-inventory").children("#number-of-ingredient"); handler.find('input[name="item[number]"]').val(newNumber); var formData= handler.serialize(); var actionUrl = $(this).siblings(".editIngredientForm").attr("action"); $.ajax({ url:actionUrl, data:formData, type:"PUT", success: function(data){ numberOfIngredient.html(newNumber); } }) }); 

而不是直接通过Ajax put请求发送数据,然后修改表单中的值,我所做的就是更改表单中的值,并通过请求发送表单数据(我使用.serialize()序列化)。

希望它能帮助别人。