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'); }); });