我在我的代码中实现了一个Ajax调用来发送有关表单提交事件的信息,但是如果插入查询有效,我现在需要render
o redirect
到特定的EJS页面或不。
它曾经在没有Ajax调用的情况下工作,但现在每当我点击提交按钮时查询都有效,但是页面没有被重定向
以下是代码:
客户端
$(function() {
$('#addForm').on('submit', function(e) {
e.preventDefault();
var titolo = $(this).find("#title").val();
var time = $(this).find("#time").val();
var tags = [];
var tagsCont = $(this).find(".chip");
var tmpTag;
for(var i = 0; i < tagsCont.length; i++){
tmpTag = $(tagsCont[i]).html().split('<')[0];
tags.push(tmpTag);
}
var data = {titolo: titolo,time: time, tags: tags};
var dataSend = $.ajax({
type: "POST",
url: "/add",
data: JSON.stringify(data),
cache: false,
contentType: "application/json"
});
dataSend.done(function(data){
if(!data.status)
console.log("Error on data send");
return;
});
dataSend.fail(function (jqXHR, textStatus) {
console.log("Error on data send " + textStatus);
return;
});
});
});
服务器
var addPost = function(req, res, next) {
if(!req.isAuthenticated()){
return res.redirect('/login');
}
else {
var user = req.user;
if(user === undefined)
return res.redirect('login');
else{
user = user.toJSON();
var timerPromise = null;
timerPromise = new Timer().fetch();
console.log(req.body);
return timerPromise.then(function(model){
var creation = new Date();
var timerVal = req.body.time;
var ended = false;
var owner = user.id_user;
var title = req.body.titolo;
if(title.length <= 0)
return res.render('add.ejs', {
title: "Timing Time - Add Timer",
user: user,
errorMessagge: "Va dichiarato un titolo"
});
var new_timer = new Timer({
titolo: title,
time: timerVal,
created: creation,
ended: ended,
id_owner: owner
});
new_timer.save(null, {method: "insert"}).then(function(model) {
if(!model)
return res.render('add.ejs', {
title: "Timing Time - ERROR",
user: user,
errorMessagge: "Problemi di inserimento del timer"
});
return res.redirect('/');
});
});
}
}
}
答案 0 :(得分:1)
当通过ajax接收响应时,无论您在后端重定向到哪个URL,都不会影响前端。您应该在客户端进行重定向。
dataSend.done(function(data){
if(!data.status)
console.log("Error on data send");
else
location.href = '/';
return;
});