簡體   English   中英

表單提交后是否重定向?

[英]Redirect after form submit or not?

在我的個人頁面(網站為1頁)的底部,有一個聯系表,該表將消息發送到我的數據庫,以便以后可以閱讀。

問題是,如果我不重定向到任何地方,頁面不會重新加載,這就是我想要的,但是正在搜索內容並在選項卡中具有加載圖標,並最終斷開連接並顯示“ ECONNRESET”錯誤雲9。

如果我確實重定向回/#contact(到頁面,然后再向下到contact部分),則它將重新加載頁面,由於網站的功能,這不是我想要的。 它具有一些在發送消息后立即加載的動畫,重新加載后將其取消,這看起來很糟糕。

我如何做到這一點,以便在發送消息后不必重新加載頁面,這意味着我不必重定向到任何地方,但是我也不會收到ECONNRESET錯誤?

app.post("/", function (req, res){
  // Retrieve form data
  var name = req.body.name;
  var email = req.body.email;
  var subject = req.body.subject;
  var message = req.body.message;
  var newMessage = {name: name, email: email, subject: subject, message: message};
  // Save new message to database
  Message.create(newMessage, function (err, sendMessage) {
    if (err) {
      console.log(err);
    } else {
      console.log(sendMessage);
    }
  });
});

如果您不是通過AJAX發布表單,則應重定向到呈現視圖的GET端點。 如果您不想重定向,那么至少您將需要有一個res.render()調用來呈現正確的視圖。 不重定向的缺點是,如果用戶刷新頁面,則可能會提示他們重新提交表單。

Message.create(newMessage, function(err, sendMessage){
    if(err){
        console.log(err);
    } else {
        console.log(sendMessage);
        res.render('contact'); //change 'contact' to the name of the view you are rendering
    }
});

我進行了一些搜索,發現了一種方法來實現我的工作方式:無需重定向或重新加載頁面。

我刪除了不必要的錯誤處理和console.log,因為我只需要表單將數據發送到我的數據庫,以便稍后讀取。

app.post("/", function(req, res){
    // Retrieve form data
    var name = req.body.name;
    var email = req.body.email;
    var subject = req.body.subject;
    var message = req.body.message;
    var newMessage = {name: name, email: email, subject: subject, message: message};
    // Save new message to database
    Message.create(newMessage);
});

顯然我需要一個Ajax / jQuery請求,如下所示:

$('form').submit(function(e){
    e.preventDefault();
    $.ajax({
        url:'/',
        type:'post',
        data:$('form').serialize(),
        success:function(){
            //whatever you wanna do after the form is successfully submitted
        }
    });
});

我找到的答案的來源 (第一個答案)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM