nodejs不在post中重定向

时间:2013-04-10 18:57:24

标签: jquery node.js express

我正在使用node.js,express和jade,并且无法弄清楚为什么在使用jQuery POST时它不会重定向。我四处看看,这似乎是一个已知的错误,但无论如何都无法弄明白。这是我的参考代码:

后端代码:

app.get('/ace', function (req, res) {
  res.render('ace', {test: 4});
});

app.post('/ace', function (req, res) {
  var input = req.body.submittedInput;
  console.log(input);
  res.redirect('/');
});

前端(在玉中)

script
var editor = ace.edit("editor");
var session = editor.getSession();
editor.setTheme("ace/theme/monokai");
editor.getSession().setMode("ace/mode/javascript");
$.noConflict();
jQuery(document).ready(function($) {
 // Use jQuery in here
  $("#submitButton").click(function() {
  $.post("/ace", 
  { "submittedInput": session.getLines(0, session.getLength()-1)},
    "json");
  });
 });
button(type='button', id="submitButton")
 | SUBMIT

这是控制台输出

[ '//Begin Typing Code here', '4' ]
POST /ace 302 5ms - 35
GET / 200 59ms - 12.54kb

1 个答案:

答案 0 :(得分:1)

这似乎是一个误解,你所编写的代码到底是怎么回事:

$.post(
  "/ace",
  { "submittedInput": session.getLines(0, session.getLength()-1)},
  "json"
);

这会向/ace发送POST请求,但您的重定向只会影响此特定请求,它不会影响整个浏览器会话。您现在拥有的内容基本上与删除重定向行相同,而是在第一个请求完成后向$.post发出第二个/请求。

如果要重定向浏览器本身,则需要删除redirect行,而是发回一些包含目标URI的JSON。然后你的jQuery代码将读取该代码并重定向页面本身。