我正在使用express.js。我想要做的是在单击表元素后重定向到html页面。目前输出是HTML源console.log(而不是重定向,然后解释为HTML页面)
我的点击功能如下(ajax帖子)
<script>
$(".table").click(function() {
/* Act on the event */
$.ajax({
url: "/selectForm",
type: "POST",
data: {name : "John"},
cache: false,
timeout: 5000,
complete: function() {
//called when complete
console.log('process complete');
},
success: function(data) {
console.log(data);
console.log('process sucess');
},
error: function() {
console.log('process error');
},
});
});
我的app.post就像下面这样简单;
app.post('/selectForm',function(req,res){
res.redirect('hello.html');
});
我在chrome javascript控制台中获得了HTML输出,但在浏览器中我没有看到它重定向到hello.html。
答案 0 :(得分:4)
您的res.redirect('hello.html')
指令对AJAX请求没有任何影响。 AJAX是异步的,因此请求将发送到服务器,响应将返回到浏览器以供JavaScript解释。
要在AJAX请求后重定向到另一个页面,您需要在window.location.replace('hello.html')
指令下面提供额外的指令(console.log('process complete')
)。
答案 1 :(得分:0)
我也有同样的问题,我找到另一种解决方法~~ 网页javascript ....
$.ajax({
url: '/test',
type : 'POST',
data: data,
success : function(ret){
document.write(ret);
},
error: function(err){
document.write(err.responseText);
}
});
,服务器代码是......
app.post('/test$',function(req,res,next){
if(req.body.xxx != null){
res.render('test',{xxx:xxx})
}else{
var err = {};
err.status = 403;
err.message = 'not allow';
next(err);
}
});
app.use(function(err, req, res, next) {
res.locals.message = err.message;
res.render('error');
});
你可以试试.....