2016-03-10 77 views
0

基本上我不是JS開發人員。但是對於我使用angularjs作爲前端和nodejs作爲後端的應用程序。路由不適用於Angular和nodejs應用程序

在angularjs我寫了一個表單,需要由用戶填寫,一旦用戶填寫表單,他可以使用提交按鈕提交。在提交按鈕點擊事件我寫下面的代碼。

<div class="submit" align="center"> 
    <input type = "submit" value="Submit !" ng-click="addResume()"> 
</div> 

凡addResume()是聲明內部角控制器作爲下面的函數 -

$scope.addResume = function(){ 
    console.log($scope.resume); 
    $http.post("/Resume", $scope.resume); 
}; 

該函數將調用節點JS服務器上的一個功能。 這隻會在success.html頁面上打印請求字段和路由。請參見下面的代碼this--

app.post('/Resume',function(req,res, next){ 
    console.log(req.body); 
    // res.render(path.join(__dirname)+'/views/success.html'); 
    next(); 
}) 

現在我面臨的問題是,我打不通角表單提交的數據,但是應用沒有關係,T移至成功頁面我想這兩個選項res.render和next()但不能流向成功頁面。

請幫我解決這個問題。

回答

1

您正在做一個Ajax請求,ajax請求不會加載您重定向的頁面。

如果你願意,你必須從客戶端做下一個頁面上移動:

$http.post("/Resume", $scope.resume).then(function(response){ 
    // success move to next page here 
}, function(rejection){ 
    // handle failure 
}) 

另一種方法是不過來調用提交表單功能,讓您的形式本地提交的數據將不會作爲json發送到服務器,它們將使用請求正文中的經典查詢字符串格式發送。

+0

感謝您的回覆。我嘗試了這種方式,但仍然無法正常工作。我改變了控制器中的代碼如下。 $ scope.addResume = function(){ \t \t console.log($ scope.resume); res.render(path.join(__ dirname)+'/ views /('/ success',function(req,res,next){ \t console.log(「Inside the success function。」) ) success.html'); }); \t \t $ http.post( 「/恢復」,$ scope.resume)。然後(功能(響應){ \t \t $ http.get( 「/成功」); \t \t}) 而在我添加的nodejs服務器中。 \t}; 我可以看到console.log($ scope.resume)的控制檯日誌; 但仍然不動。 – rraghuva

+0

Nop這不是這樣做的,$ http.get正在執行一個完全像你的$ http.post一樣的ajax請求。使用$位置爲了移動到正確的頁面。 Angularjs是一個單頁面應用程序,你應該只加載index.html並且永遠不要從它移開。 $ location的文檔https://docs.angularjs.org/#!/api/ng/service/$location – Walfrat

+0

如果你能指點一些書面的例子,這將是一個很大的幫助。 在此先感謝。 – rraghuva

相關問題