在ajax请求之后,我需要在服务器端用新数据重新渲染homepage.ejs。我知道您可以(以某种方式)重新呈现ajax回调中的元素,但是我想知道是否可以重新呈现homapage.ejs,因为我有if语句寻找休假,并且current_user变量设置了正确的partialview.ejs < / p>
我的Ajax方法:
function user_login(email, password) {
var data = {};
data.email_login = email;
data.password_login = password;
var message_header = $("#message_header");
$.ajax({
url: "/sign_in",
method: 'POST',
data: data
}).done(function (res) {
if (!res.success) {
message_header.text("Incorrect email of password. Please try again.").css("color", "red");
$("#username_textfield").val("");
$("#password_textfield").val("");
}
if (res.success) {
console.log("user logged");
}
});
我的服务器端(在查询回调中)
get_all_vacations(function (error, vacations) {
if (error) {
console.log("error when getting vacations " + error);
response.json({ success: false });
} else {
request.session.vacations = vacations;
response.render('the_vacation.ejs', { vacations : vacations, current_user : new_current_user }, function() {
response.json({success : true});
console.log("in render method");
});
}
});
我尝试了这个,但是没有用。
response.render('the_vacation.ejs', { vacations: vacations, current_user: new_current_user });
答案 0 :(得分:0)
根据登录代码的编写方式,我认为最简单的方法是在登录成功后使用window.location.reload();
。
function user_login(email, password) {
var data = {};
data.email_login = email;
data.password_login = password;
var message_header = $("#message_header");
$.ajax({
url: "/sign_in",
method: 'POST',
data: data
}).done(function (res) {
if (!res.success) {
message_header.text("Incorrect email of password. Please try again.").css("color", "red");
$("#username_textfield").val("");
$("#password_textfield").val("");
}
if (res.success) {
console.log("user logged");
window.location.reload(); // <--- Cause the browser to reload the EJS
}
});