2013-04-10 31 views
0

我目前正在使用node.js,express和jade,並且無法弄清楚爲什麼當我使用jQuery POST時它不會重定向。我四處閱讀,似乎這是一個已知的錯誤,但無論如何都無法解決它。這裏是我的參考代碼:nodejs不在重定向

後端代碼:

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

我沒有看到問題:由於您的輸出表示它收到發送請求併發送重定向(狀態碼302)。之後,它會收到/的獲取請求,這完全是您設置的目標(res.redirect('/'))。所以重定向的作品。有什麼問題? – 2013-04-10 19:21:21

+0

你的輸出顯示它被重定向到'/',這是什麼問題? – Chad 2013-04-10 19:47:02

+0

我收到了正確的狀態碼,但頁面沒有重定向。它停留在'/ ace',並且自然不會去'/' – 2013-04-10 19:56:58

回答

1

這似乎是誤解你編寫的代碼究竟如何:

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

這會向/ace發送一個POST請求,但您的重定向只會影響這個特定的請求,它並不影響整個瀏覽器會話。你現在擁有的東西基本上與刪除重定向行相同,而是在第一個請求完成後向/發出第二個$.post請求。

如果你想重定向瀏覽器本身,那麼你需要刪除你的redirect行,而是發回一些包含目標URI或其他東西的JSON。然後你的jQuery代碼將讀取該代碼並重定向頁面本身。