使用Express提交发帖请求后如何留在同一页面上?

Rob*_*bin 0 javascript express

我知道这可能是一个简单的问题,但我只是没有找到想要的解决方案。我写快递的邮政路线。像这样:

app.post('/search', function(req, res){
// Some code to get data from req and save data to db
// Then want to stay current page.
});
Run Code Online (Sandbox Code Playgroud)

我的html:

<form action="/search" method="post">
     <input value="name" name="marker[name]">
     <input value="address" name="marker[address]">
     <input value="rating" name="marker[rating]">

     <button id="favo-button" type="submit">
         Submit
     </button>
 </form>
Run Code Online (Sandbox Code Playgroud)

当用户单击提交按钮时,数据通过req发送到发布路径,并在那里插入db。然后,我希望页面不直接指向任何地方,而是保持当前页面。我尝试了一些方法,但处理得不太好。我试过的

  1. 在路由中, res.render('/search'); 这将使页面以相同的视图重新渲染,但是由于重新渲染,页面将闪烁。

  2. 对路线中的资源不做任何事情,那么页面加载圈子将永远不会停止。

    app.post('/ search',function(req,res){var data = req.body.marker; //一些代码将数据插入db // //然后不对res做任何操作。该页面将保留,但会继续加载。 );

有什么办法可以做任何事情res并留下来,同时又不让页面继续加载?

Que*_*tin 5

有两种方法可以做到这一点。

  1. 返回204 No Content响应。(app.post('/search', (req, res) => res.status(204).send());
  2. 用JavaScript(即Ajax,例如XMLHttpRequest)发出请求,而不是提交表单

(您也可以将表单提交到隐藏的iframe中,但这只是一个丑陋的hack)。

  • 你好,如果我想留在同一页面并发出“数据提交成功”警报并清除表单数据怎么办?@Quentin (2认同)