[英]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.