2017-11-09 4 views
1
내가 할 경우 내가 프론트 엔드에서 이제 expressjs 백엔드 내 각 프론트 엔드를 통해 특정 URL에 GET 요청을 할

: -

<li> 
     <a ng-click="givequiz()">GiveQuiz</a> 
</li> 

및 내 각 코드는 다음과 같습니다. -

$scope.givequiz=function(){ 
    console.log("give quiz"); 
    $http.get('/home/givequiz').then(function(res){ 
     //request is going fine and all 
}); 
} 

위의 작업은 효과가 있지만 개체로 응답을 받고 있습니다. 전체 파일과 URL이 변경되지 않았습니다.

하지만 난 양식 GET 일 할 경우 : -이 새로운 URL로 저를 필요

<li> 
     <form action="http://localhost:8000/home/givequiz" method="GET"> 
      <button type="submit">Give Quiz</button> 
     </form> 
</li> 

"http://localhost:8000/home/givequiz" 전화를하지만, $ http.get하지 왜 그렇게입니다합니까? 두 가지 방법이 동일하지 않습니까? 이것이 바로 두 요청을 처리하는 방법입니다.

router.get('/givequiz', function(req, res, next) { 
    console.log("in getquiz"); 
//always gets printed^means all reqs come here 
    res.sendFile('/givequiz.html',{ root: client }); 
}); 
     Any help will be much appreciated.  
+0

처음에는 경로를 수동으로 변경해야합니다. –

답변

1

코드가 정상적으로 작동하는 것 같습니다. Angular는 백그라운드에서 AJAX 타입 요청을합니다. 당신은 대안으로 다음 해결 블록 window.location을 설정할 수

$http.get('/home/givequiz').then(function(res){ 
    // request is going fine and all 
    $state.go(nameOfState) 
}); 

하지만 반면 state.go가 안 페이지 새로 고침의 원인이 prob는 것이다 응답이 돌아 오면 당신이 경로를 변경하려면 성공적으로 당신은해야한다.

+0

양식의 get 장면이 "givequiz"로 리디렉션되는 이유는 아약스가 해당 페이지를 응답으로 보냅니다. – Asim

+0

이전에는 웹 세계에서 요청을하기 위해 페이지를 다시로드해야했습니다. 새로운 세상에서 당신은 뒷 배경에 요청할 수 있습니다. 이를 AJAX 요청이라고합니다. 페이지를 다시로드하지 않고 서버에서 더 많은 정보를 얻고 싶을 때입니다. Angular는 AJAX 타입의 정보 요청을합니다. 코드가 해결되면 다음에 수행 할 작업을 알려줍니다. Angular가 페이지를 새로 고치지 않고 상태를 변경할 수 있다는 점을 감안할 때 이것은 Angular 세계에서 유용한 것입니다. – danday74

+0

정확히 어떻게 Ajax 요청을 보내고 응답으로 가져 오는 대신 새 페이지를 가져올 수 있습니까? – Asim