I am using an express.js. What I would like to do is just redirect to an html page after a table element is clicked . Currently the output is the HTML source console.log ( instead of redirected and then intepreted as HTML page)

My click function as below ( ajax post)

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

});

My app.post as simple as below ;

 app.post('/selectForm',function(req,res){


 res.redirect('hello.html');
 });

I got the HTML output in chrome javascript console, but in browser I dont see it's redirect to hello.html.

有帮助吗?

解决方案

Your res.redirect('hello.html') instruction will have no affect on an AJAX request. AJAX is asynchronous so the request will be made to the server and the response will be returned to the browser to be interpreted by your JavaScript.

To redirect to another page after an AJAX request, you will need to give an extra instruction (window.location.replace('hello.html')) beneath the console.log('process complete') instruction.

其他提示

I aslo have the same problem,and i found another method to resolve it~~ web javascript....

$.ajax({
    url: '/test',
    type : 'POST',
    data: data,
    success : function(ret){
        document.write(ret);
    },
    error: function(err){
        document.write(err.responseText);
    }
});

and the server code is ...

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

you can try it.....

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top