2016-10-02 89 views
0

我試圖從角度控制器發佈發佈請求後從nodejs呈現頁面。但是,頁面不會加載,並且它保持在同一頁面上。控制檯中沒有錯誤。而且在瀏覽器開發工具中,我可以看到在網絡預覽部分下加載的頁面。 這是正確的還是建議的方式?我想,控制回到控制器,而不是從節點呈現頁面。我們可以避免這種情況,還是有更好的方法來做到這一點? 任何幫助表示讚賞。嘗試通過angularjs發出發佈請求後從節點js呈現頁面

從控制器

POST請求:

$http({ 

       method : "POST", 
       url: '/afterSignin', 
       data: { 
         "inputUsername": $scope.inputUsername, 
         "inputPassword": $scope.inputPassword 

        } 

       }).success(function(data) 
        { 

          if(data.statusCode==401) 
          { 
           $scope.msg = "Invalid Username or Password"; 
          } 

          else 
          { 
           console.log(data.statusCode); 
           console.log("login successfull"); 


          } 

服務器端代碼(afterSignIn.js)

mysql.fetchData(function(err,results){ 
     if(err){ 
      throw err; 
     } 
     else 
     { 
      if(results.length > 0){ 
       console.log("valid Login"); 

        res.render('successLogin', { data: results } , function(err, result) { 

        // render on success 
        if (!err) { 
         res.end(result); 
        } 
        // render or error 
        else { 
         res.end('An error occurred'); 
         console.log(err); 
        } 
       }); 

控制檯輸出:

連接關閉.. DB結果:[對象的對象] 有效登錄 [0mPOST/afterSignin [32m200 [0m103.425 ms -

Chrome Console Output

+0

該呈現將作爲對'$ http'產生的ajax調用的響應來發送。除非你對此做出迴應,否則不會有任何改變。不是很清楚你期望發生什麼 – charlietfl

+0

這是一種登錄應用程序。用戶登錄後,sucessfull登錄用戶應重定向到主頁。有沒有其他方法可以實現這一點? – ikck

+0

通常在通過內部應用程序路由器(單頁應用程序)完成的角應用程序中。如果你想完全重新加載頁面,那麼你要麼不使用'$ http'來提交和使用瀏覽器的默認表單提交過程,或做一個JavaScript重定向成功回調 – charlietfl

回答

0

Look at this answer 有許多很好的解決這個的。也許最簡單的就是更換窗口的URL:

$http({ 
    method : "POST", 
    url: '/afterSignin', 
    data: { 
      "inputUsername": $scope.inputUsername, 
      "inputPassword": $scope.inputPassword 

     } 
    }).success(function(data){ 
       if(data.statusCode==401) { 
        $scope.msg = "Invalid Username or Password"; 
       }else { 
        console.log(data.statusCode); 

        // Interesting part, redirect the user 
        $window.location = '/successLogin' 
       } 
    }); 

正如你所看到的,接收指示登錄成功的響應後,您可以重定向客戶端上的用戶。 (您必須注入$window作爲服務/控制器的依賴關係。)

更好的解決方案是使用客戶端路由器包, ui-router(你應該這樣)。