AjAX post 请求重定向页面时出现问题

标签 ajax node.js express pug

我试图在 AJAX post 请求成功时重定向到另一个网页,但我无法弄清楚。

我尝试在服务器端使用 res.redirect(),并在客户端使用 window.location=urllocation.href=urllocation.replace(url),但这些都不适合我。

这是我的 jQuery ajax 请求:

function addContact(){
  var contactName = $('#name').val();
  var email = $('#email').val();

  var newContact = {name: contactName, email: email};

  $.post('/contacts/add', newContact)
    .success(function(data){
      location.href = data.redirect;
    })
}

这是我的服务器代码:

router.post('/add', function(req, res, next){
    fs.readFile('./contacts.json', function(err, data){
      if (err) return res.status(400).send(err);

      var contactArr = JSON.parse(data);
      var newContact = req.body;
      contactArr.push(newContact);

      fs.writeFile('./contacts.json', JSON.stringify(contactArr),     function(err){
        if (err) return res.status(400).send(err);
        res.redirect('/');
      });
    });
});

如有任何帮助,我们将不胜感激!

最佳答案

服务器代码需要发送新的 URL,而不是重定向,然后客户端代码使用该 URL 进行重定向。所以:

服务器代码:

router.post('/add', function(req, res, next){
    fs.readFile('./contacts.json', function(err, data){
      if (err) return res.status(400).send(err);
      var contactArr = JSON.parse(data);
      var newContact = req.body;
      contactArr.push(newContact);

      fs.writeFile('./contacts.json', JSON.stringify(contactArr), function(err){
          if (err) return res.status(400).send(err);
          res.json({"redirect":"http:www.google.com"});//replace this with your redirect url
      });
    });
});

和客户端代码:

function addContact(){
  var contactName = $('#name').val();
  var email = $('#email').val();
  var newContact = {name: contactName, email: email};

  $.post('/contacts/add', newContact)
    .success(function(data){
      window.location.href = data.redirect;
    })
}

应该这样做。

关于AjAX post 请求重定向页面时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35007064/

相关文章:

JQuery ajax 调用重置所有表单字段

javascript - jQuery 在单击时动态更改图标功能

javascript - 在 Cassandra 和 Node.js 中使用用户定义的类型

javascript - 设置来自 server-Node.js(express)/Asp.net-core 的隐藏文本以从客户端读取它- Angular 2

javascript - 是否可以使用 Kotlin 构建完整的 Node.js Web 应用程序?

node.js - 上传带有标题的图片

javascript - 进行 ajax 调用时如何尊重客户端验证

javascript - ASP NET 使用 jQuery 和 AJAX 上传图像

arrays - 从 Handlebars Helper 返回对象数组

node.js - 如何使用 PM2 将执行参数传递给应用程序?