我正在使用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
答案 0 :(得分:1)
这似乎是一个误解,你所编写的代码到底是怎么回事:
$.post(
"/ace",
{ "submittedInput": session.getLines(0, session.getLength()-1)},
"json"
);
这会向/ace
发送POST请求,但您的重定向只会影响此特定请求,它不会影响整个浏览器会话。您现在拥有的内容基本上与删除重定向行相同,而是在第一个请求完成后向$.post
发出第二个/
请求。
如果要重定向浏览器本身,则需要删除redirect
行,而是发回一些包含目标URI的JSON。然后你的jQuery代码将读取该代码并重定向页面本身。