节点应用程序不处理发布请求

时间:2020-08-31 18:18:28

标签: javascript node.js express xmlhttprequest httprequest

每次单击页面上的按钮时,我的javascript文件都会发出以下请求(使用Express在Node中)

toggleCartItem = index => {
    http = new XMLHttpRequest();
    http.open("POST", `/cart_item/${index}`, true);
    http.send();
}

这应该可以捕获发帖请求

app.post("/cart_item/:index", (req, res) => {
    console.log("order id:",req.params.index)
})

因此,当我单击按钮时,日志将显示在节点控制台中,但是在随机单击之后,日志将停止显示,并且浏览器中的控制台显示错误,或者我尝试重新加载页面并且页面卡住了重新加载,并且没有来自节点应用程序的进一步响应。如果我不重定向到另一个页面,或者我正在处理来自同一页面的节点应用程序上的请求,是否需要发送其他请求?我仍在学习http请求的工作方式,因此欢迎您提供任何反馈和提示。

2 个答案:

答案 0 :(得分:0)

出现的问题与您如何在后端设置网址有关

改为尝试

 app.post("/cart_item/:index", (req, res) => {
    console.log("order id:",req.params.index)
    res.json();
 })

那么前端应该是

 toggleCartItem = index => {
    http = new XMLHttpRequest();
    http.open("POST", `/cart_item/${index}`, true);
    http.send();
 }

这将在后端和前端托管在同一域和端口的假设下工作。如果没有,那么您将需要向与后端托管设置匹配的前端添加正确的域和端口

如果您仍然想在路径中使用:,则可以执行以下操作

toggleCartItem = index => {
    http = new XMLHttpRequest();
    http.open("POST", `/cart_item:${index}`, true);
   http.send();
}

请注意,服务器现在需要使用双冒号来支持它

 app.post("/cart_item/::index", (req, res) => {
    console.log("order id:",req.params.index)
    res.json();
 })

答案 1 :(得分:0)

我要添加结束请求处理代码:

app.post("/cart_item/:index", (req, res) => {
    console.log("order id:",req.params.index);
    res.send("OK");
 })