Javascript 为什么XMLHttpRequest PUT请求不起作用?
我有一个简单的nodejsapi,在我的控制器中有基本的CRUD操作 然而,所有的请求方法,除了PUT,似乎都能工作。我只是对PUT方法有问题 这是API端的代码:Javascript 为什么XMLHttpRequest PUT请求不起作用?,javascript,html,node.js,api,xmlhttprequest,Javascript,Html,Node.js,Api,Xmlhttprequest,我有一个简单的nodejsapi,在我的控制器中有基本的CRUD操作 然而,所有的请求方法,除了PUT,似乎都能工作。我只是对PUT方法有问题 这是API端的代码: app.put('/api/prodotti/:Id', function (req, res) { connection.query("UPDATE Prodotti SET Descrizione=?, Prezzo=?, Categoria=? WHERE Id=?", [req.body.Descrizione, req.b
app.put('/api/prodotti/:Id', function (req, res) {
connection.query("UPDATE Prodotti SET Descrizione=?, Prezzo=?, Categoria=? WHERE Id=?", [req.body.Descrizione, req.body.Prezzo, req.body.Categoria, req.params.Id], function (error, result) {
if (error)
res.send("Errore query: " + error.message);
if (result.changedRows == 0)
res.send("Non modificato!");
console.log("Id modificato: " + req.params.Id);
res.json(req.params.Id);
});
});
虽然这是我的HTML页面(客户端):
我能够提出所有其他请求,并很容易得到答复。我知道单击按钮时会调用updatePrototti
函数,但即使我向API添加断点,也不会收到请求
感谢您的帮助。在devtools的网络选项卡中,您看到您发出的请求了吗?请注意,在
res.send
之后,您不能调用res.json(req.params.Id)
,您需要添加一个返回值
@ManuelSpigolon yes,但是res.send在if中,如果没有则调用res.jsonerrors@ajuni880不,我不明白it@RiccardoRaffini看看这个。基本上它说setRequestHeader
应该在open
<form>
<label>Id</label>
<br />
<input id="Mid" type="number" name="Id"/>
<br />
<label>Descrizione</label>
<br />
<input id="Mdescrizione" type="text" name="Descrizione" />
<br />
<label>Prezzo</label>
<br />
<input id="Mprezzo" type="number" name="Prezzo" />
<br />
<label>Categoria</label>
<br />
<select id="Mcategoria" name="Categoria">
<option value="Categoria 1">Categoria 1</option>
<option value="Categoria 2">Categoria 2</option>
<option value="Categoria 3">Categoria 3</option>
<option value="Categoria 4">Categoria 4</option>
<option value="Categoria 5">Categoria 5</option>
</select>
<br />
<br />
<button type="button" onclick="UpdateProdotti();"> Modifica </button>
<input type="reset" value="Reset campi" />
</form>
function UpdateProdotti() {
var id = document.getElementById("Mid").value;
var descrizione = document.getElementById("Mdescrizione").value;
var prezzo = document.getElementById("Mprezzo").value;
var categoria = document.getElementById("Mcategoria").value;
data = {};
data.Descrizione = descrizione;
data.Prezzo = prezzo;
data.Categoria = categoria;
var json = JSON.stringify(data);
var xhr = new XMLHttpRequest();
xhr.setRequestHeader('Content-type','application/json; charset=utf-8');
xhr.open("PUT", "api/prodotti/" + id, true);
xhr.onload = function () {
if (this.readyState == 4 && this.status == 200) {
alert("Modificato " + xhr.responseText);
}
}
xhr.send(json);
}