2016-12-05 1 views
0

여기에 사용자 이름과 암호를 내 스프링 MCU 컨트롤러에 보내려고합니다. 아약스를 사용하여 mvc 메서드를 호출하고 있습니다. 컨트롤러에 도달하지 못했습니다.Ajax 통화에서 사용자 이름과 암호를 보내는 방법은 무엇입니까?

각 컨트롤러 : -

$scope.formSubmit=function(){ 
     alert("submitted") 

     return $http({ 
      url :'loginSubmit' , 
      method : "POST", 
      data: { username: $scope.username, password: $scope.password } 
      //data: data 
     }).success(function(data, status, headers){ 

     }).error(function(data, status, headers) { 
      console.log("login error"+status);  
    }); 

    } 

MVC 컨트롤러

@RequestMapping(value="/loginSubmit",method=RequestMethod.POST) 
    public @ResponseBody User loadUserByUsername(@RequestParam("username") String username,@RequestParam("password") String password, HttpSession session){ 
     System.out.println("controller"); 
     System.out.println("name is "+username); 

     return null; 
    } 
+0

당신이 콘솔에서 네트워크를 확인하고 어디에서 요청이 타격 볼 수보십시오? –

+0

그리고 요청한 URL을 서버쪽에 기록하십시오. 항상 본문에 자격 증명을 보냅니다. [Read comments] (http://stackoverflow.com/q/38716703/4723795) – xenteros

답변

3

당신이 요청 PARAMS을 사용하는 경우 URL에 추가해야

$scope.formSubmit=function(){ 
     alert("submitted") 

     return $http({ 
      url :'loginSubmit?username='+$scope.username+'&password='+$scope.password , 
      method : "POST", 
     }).success(function(data, status, headers){ 

     }).error(function(data, status, headers) { 
      console.log("login error"+status);  
    }); 

    } 
,

참고 : 경고를 사용하지 마십시오. 이 대신 요청 URL의 본문에 자격 증명을 보낼 것이라고 할 CONSOLE.LOG

가장 좋은 방법을 사용

** 본문으로 데이터를 전송하는 기존의 JS 코드를 유지하고 자바 코드를 변경 **

@RequestMapping(value="/loginSubmit",method=RequestMethod.POST) 
public @ResponseBody User loadUserByUsername(@RequestBody Map<String,Object> credentials, HttpSession session){ 
    String username = credentials.get("username"); 
    String password = credentials.get("password"); 
    System.out.println("controller"); 
    System.out.println("name is "+username); 
    return null; 
} 
+1

그리고 요청한 URL을 서버쪽에 기록하십시오. 항상 본문에 자격 증명을 보냅니다. [일부 토론] (http://stackoverflow.com/q/38716703/4723795) – xenteros

+0

@xenteros. 그 코드를 추가했습니다. – madhairsilence

+0

스프링 시큐리티를 사용할 때 반드시 필요한 것은 아닙니다. 그런 다음, 본문을 양식으로 보내면 Spring은 자체적으로 해결할 것입니다. 첨부 된 게시물에 설명되어 있습니다 – xenteros

-3
return $http({ 
      url :'/loginSubmit', 
      method : "POST", 
      data: { username: $scope.username, password: $scope.password } 
      //data: data 
     }).success(function(data, status, headers){ 

     }).error(function(data, status, headers) { 
      console.log("login error"+status);  
    }); 

    } 

@RequestMapping(value="/loginSubmit",method=RequestMethod.POST) 
    public @ResponseBody User loadUserByUsername(@RequestParam("username") String username,@RequestParam("password") String password, HttpSession session){ 
     System.out.println("controller"); 
     System.out.println("name is "+username); 

     return null; 
    } 
0

는이

$scope.formSubmit=function(){ 
     alert("submitted") 
     var uname = $scope.username,pswd=$scope.password; 
     return $http({ 
      url :'loginSubmit', 
      method : "POST", 
      params : {username:uname,password:pswd} 
     }).success(function(data, status, headers){ 

     }).error(function(data, status, headers) { 
      console.log("login error"+status);  
    }); 

    } 
관련 문제