在node.js中的ajax post之后不呈现HTML页面

时间:2014-05-12 11:03:49

标签: jquery ajax node.js express

我正在使用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。

2 个答案:

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

你可以试试.....