使用Jquery和节点js发送Json数据和重定向

时间:2017-12-22 05:15:51

标签: javascript jquery json node.js redirect

我有以下页面,如下所示:enter image description here

当我点击编辑按钮时,我希望将按钮的id发送到我的节点JS服务器,它会将我重定向到以下网页: enter image description here

此外,我的Node JS服务器将发送回JSON数据以填充下一页中的表单。我面临的问题是,每当我点击按钮时,我的页面都不会被重定向。 以下jquery代码发送ajax调用:

$("#viewAllContest button").click(function () {
//console.log($(this).attr('id'));
var id = $(this).attr('id');
$.ajax({
    type: 'POST',
    url: '/contests/redirectContest',
    data: JSON.stringify({id:id}),
    success: function(data) { console.log('success')},
    contentType: "application/json",
    dataType: 'json'
    });
});

然后我在Node JS应用程序中的路由收到请求并应该重定向页面:

router.post('/redirectContest',function (req,res) {
var id = req.body.id;
console.log(id);
res.redirect('/contests/viewContest');});

我甚至添加了return res.redirect('/contests/viewContest');,但它没有重定向我的网页。呈现viewContest的代码是:

router.get('/viewContest',ensureAuthenticated,function (req,res) {

res.render('viewContest');});

如果有人可以指导我在这里出错的地方,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先需要修改以下路线 -

router.post('/redirectContest',function (req,res) {
var id = req.body.id;
console.log(id);
//remove the redirect code
//res.redirect('/contests/viewContest');});
//Now send the json response 
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({ url: '/contests/viewContest' }));

现在修改你的ajax代码如下 -

$("#viewAllContest button").click(function () {
//console.log($(this).attr('id'));
var id = $(this).attr('id');
$.ajax({
    type: 'POST',
    url: '/contests/redirectContest',
    data: JSON.stringify({id:id}),
    success: function(data) { window.location.href=data.url;},
    contentType: "application/json",
    dataType: 'json'
    });
});