2016-12-05 109 views
0

這裏我想發送用戶名和密碼到我的彈簧mvc控制器。我正在使用ajax來調用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。始終在身體中發送憑證。 [閱讀評論](http://stackoverflow.com/q/38716703/4723795) – xenteros

回答

3

如果使用請求參數,你必須附加到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);  
    }); 

    } 

注意:不要使用警報。使用的console.log

最好的方式做到這一點的身體會被髮送,而不是請求URL的憑據

**保留髮送數據爲主體的舊的JS代碼,並更改Java代碼**

@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

然後請記錄在服務器端請求的網址。始終在身體中發送憑證。 [一些討論](http://stackoverflow.com/q/38716703/4723795) – xenteros

+0

@xenteros。添加了該代碼。 – madhairsilence

+0

當你使用Spring Security時,這不是必要的。那麼,如果你將身體作爲一種形式發送,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);  
    }); 

    }