代码之家  ›  专栏  ›  技术社区  ›  Robin

如何在用快递提交邮件请求后保持在同一页?

  •  0
  • Robin  · 技术社区  · 8 年前

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

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

    我的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>
    

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

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

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

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

    有没有办法什么都不做 res 留下来,同时不让页面继续加载?

    1 回复  |  直到 8 年前
        1
  •  5
  •   Quentin    8 年前

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

    1. 返回A 204 No Content response . ( app.post('/search', (req, res) => res.status(204).send()); )
    2. 使用javascript(即ajax,例如 XMLHttpRequest )而不是提交表格

    (您也可以将表单提交给一个隐藏的iframe,但这只是一个难看的技巧)。