0

我目前正在玩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
4

1 回答 1

1

这似乎是一种误解,您编写的代码到底是如何工作的:

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

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

如果您想重定向浏览器本身,那么您需要删除您的redirect行,而是发回一些包含目标 URI 或其他内容的 JSON。然后您的 jQuery 代码将读取该代码并重定向页面本身。

于 2013-04-11T04:19:35.673 回答