我是EJS的新人。
我尝试使用。
提交ajax post请求以提交给DB的值 $.ajax({
type: 'POST',
url: '/register',
data: user,
success: function(data){
console.log(data);
return data;
}
});
return false;
此调用成功,之后控件进入调用函数
var sess;
app.post('/register',urlencodedParser,function(req,res){
sess=req.session;
var newUsr=Users(req.body).save(function(err,data){
if(err) throw err;
console.log(" back from ajax with data :::; " + data);
console.log("step1 cleared");
sess.registered=true;
});
console.log("step2 cleared");
location.window.href = '/index2';
});
我希望用户在注册成功后看到索引页面,但我收到以下错误。
ReferenceError: location is not defined
我认为位置对象不存在于节点中,因此出现此错误,但我又不知道如何解决此问题,请提示
答案 0 :(得分:1)
在Node.js中,您可以使用res.redirect('/')
,但它仅适用于GET
次请求。在这种情况下,正确的方法是从服务器返回带有重定向状态代码的响应:302
并在您的ajax脚本中检查状态代码是否等于302
更改位置。
您的代码应如下所示:
$.ajax({
type: 'POST',
url: '/register',
data: user,
success: function(data, textStatus, response) {
if(response.status === 302) {
window.location.href = '/index2';
}
return data;
}
});
服务器端代码:
var sess;
app.post('/register', urlencodedParser, function(req, res) {
sess = req.session;
var newUsr = Users(req.body).save(function(err, data) {
if (err) throw err;
console.log(" back from ajax with data :::; " + data);
console.log("step1 cleared");
sess.registered = true;
res.status(302).send('User saved successfully');
});
});