2014-01-05 92 views
2

我使用JQuery從客戶端發送POST請求並使用node.js重定向到root。 但在我的開發者控制檯我得到的狀態:302(暫時)和類型:待定當從Node + Express重定向時掛起類型

客戶端代碼:

$.ajax({ 
    type: "POST", 
    dataType: "json", 
    data: JSON.stringify({ 
      username_var:username_var, 
      password_var:password_var   
     }), 
    url: "/login", 
    success: function(data){ 
     alert(data)  
     console.log(data); 
     alert(data.name); 
    } 
}); 

服務器代碼:

if (req.method == 'POST'){ 
    console.log("[200] " + req.method + " to " + req.url); 
    req.on('data', function(chunk) { 
     console.log("Received body data:"); 
     console.log(chunk.toString()); 
     var userLoginObject = JSON.parse(chunk); 
     console.log(userLoginObject.username_var); 
     console.log(userLoginObject.password_var); 
     var status = { 
      name: "CHATEAU DE SAINT COSME", 
      year: "2009", 
      grapes: "Grenache/Syrah", 
      country: "France", 
      region: "Southern Rhone", 
      description: "The aromas of fruit and spice...", 
      picture: "saint_cosme.jpg" 
     }; 
     res.redirect("/"); 
     res.end(); 
     // //res.send(status); 
     // res.writeHead(301, {"Location": "http://localhost:8000/"}); 
     // res.end("Test"); 
    }); 
+1

@BlackSheep謝謝 –

+0

首先,你的服務器代碼如果塊缺少一個右括號 – dcodesmith

+0

添加了右括號(當我粘貼代碼時我錯過了)。基本上我想從服務器端重定向。我嘗試從堆棧中的代碼,但我正在我的開發人員控制檯中掛起類型。 –

回答

0

除非事情已經發生了變化(在過去一年左右),從服務器重定向(使用expressJS)將不適用於來自客戶端的POST操作。您可以使用像這樣的客戶端重定向(基本上,當你需要重定向,發送特定郵件,你可以在回調處理程序檢查爲後期操作):

$.post('/login',function(){ //window.location to be called upon message from server 
window.location = 'page to redirect to'; //you can check for a certain message from server 
}); 

在你的情況,它將是這部分:

success: function(data){ 
window.location = 'page to redirect to'; 
} 

希望它有幫助。

+0

謝謝阿里。這是我放在一起的解決方案,但我很困惑這是否正確的方法或是否有任何更好的方式來執行POST操作 –

+0

,我認爲這是一個解決方案,將工作(您可以重定向從服務器非POST調用)。大約18個月前,我的確如此。 –

+0

這就是正確的阿里,我能夠重定向GET請求與重定向(「」); –