2016-12-05 4 views
0

Hier möchte ich Benutzername und Passwort an meine Feder mvc Controller senden. Ich benutze Ajax, um die mvc-Methode aufzurufen. Und es erreicht nicht den Controller.Wie Benutzername und Passwort in Ajax Anruf senden?

Winkelregler: -

$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 Controller

@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

können Sie das Netzwerk in der Konsole überprüfen und sehen, wo trifft Ihre Anfrage? –

+0

Und dann loggen Sie bitte die angeforderte URL auf der Serverseite ein. IMMER senden Sie Anmeldeinformationen im Körper. [Lesen Sie Kommentare] (http://stackoverflow.com/q/38716703/4723795) – xenteros

Antwort

3

Wenn Sie Anfrage params verwenden, müssen Sie auf URL anhängen

$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);  
    }); 

    } 

Hinweis: Warnung nicht verwenden. Verwenden Sie console.log

Der beste Weg, dies zu tun, würde die Zugangsdaten in Körper das Senden statt URL

** Bewahren Sie Ihre alten JS-Code von Senden von Daten als Körper und Ändern Sie den JAVA-Code **

@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

Und dann loggen Sie bitte die angeforderte URL auf der Serverseite. IMMER senden Sie Anmeldeinformationen im Körper. [Einige Diskussion] (http://stackoverflow.com/q/38716703/4723795) – xenteros

+0

@ Xenteros. Diesen Code hinzugefügt. – madhairsilence

+0

Es ist nicht erforderlich, wenn Sie Spring Security verwenden. Dann, wenn Sie den Körper als eine Form senden, wird Spring sich selbst auflösen. Es wird in angehängten Post – 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

Versuchen Sie, diese

$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);  
    }); 

    } 
Verwandte Themen