ReferenceError:在Ajax调用尝试redirect用户之后没有定义窗口

我是新来的EJSexpression。

我试着做一个Ajax的后请求提交给数据库使用的值。

$.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 

我觉得位置对象是不是在节点,因此这个错误,但我不知道如何解决这个问题,请build议

在Node.js中,你可以使用res.redirect('/') ,但是它仅适用于GET请求。 在这种情况下正确的方法是返回来自服务器的redirect状态码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'); }); });