2016-10-16 1 views
0

Невозможно разобраться, почему эта ошибка. Я не использую JSON.parse(), что является вероятной причиной возникновения этой ошибки из большинства сообщений, которые я видел.Неожиданный токен u в JSON в положении 0 угловой пружины

Я использую простую пользовательскую регистрацию в угловом:

$scope.addUser = function() { 
    $scope.userData = { 
     username: $scope.user.email, 
     password: $scope.user.password 
    }; 

    auth.signup($scope.userData, successAuth, function (error) { 
     $rootScope.error = error; 
     console.log("error: " , $rootScope.error); 
    }); 
}; 

myApp.service('auth', function($http){ 
    return { 
     signup: function(data,success, error){ 
      $http.post('mvc-dispatcher/registration/', data).success(success).error(error); 
     } 
    }; 
}); 

Spring остального бэкенд служба:

@RestController 
public class UserController { 
    @Autowired 
    private UserService userService; 

    @Autowired 
    private SecurityService securityService; 

    @Autowired 
    private UserValidator userValidator; 

    @RequestMapping(value = "/registration", consumes = "application/json", produces = "application/json", headers = "content-type=application/x-www-form-urlencoded", method = RequestMethod.POST) 
    public ResponseEntity registration(@RequestBody User userBean, BindingResult bindingResult, Model model) { 
     System.out.println("register 2"); 

     userValidator.validate(userBean, bindingResult); 
     HttpHeaders headers = new HttpHeaders(); 

     if (bindingResult.hasErrors()) { 
      return new ResponseEntity("user already exists", HttpStatus.CONFLICT); 
     } 

     userService.saveUser(userBean); 
     securityService.autologin(userBean.getUsername(), userBean.getPassword()); 
     return new ResponseEntity(headers, HttpStatus.CREATED); 
    } 
} 

Когда пользователь уже зарегистрирован, я посылаю строку ответа «пользователь уже существует ", но в консоли я не могу уловить ответ об ошибке. Его печать SyntaxError: Unexpected token u in JSON at position 0

ответ

1

Функция $ http.post(), вероятно, пытается декодировать ваш JSON, потому что ваш тип данных JSON, и ваша веб-служба принимает приложение/json как тип. То, что я предлагаю сделать, это передать json-массив вашему коду.

{ 
    valid: false, 
    errors: ['User allready connected'] 
    value: [] 
} 

или

{ 
    valid: true, 
    error: [], 
    value: [userdata] 
} 

можно просто кодировать HashMap в JSON в вашем Java и отправить их клиенту.

Надеюсь, это поможет!

  • Nic
+0

Я сделал это, и она работала: 'если (bindingResult.hasErrors()) { Map errorResponse = новый HashMap(); errorResponse.put («ошибка», «пользователь уже существует»); return new ResponseEntity (errorResponse, HttpStatus.CONFLICT); } ' – Satyadev

+0

Спасибо за подсказку о hashmap – Satyadev