как проверить, существует ли имя пользователя в angularjs

0

Все данные имени пользователя и пароля присутствуют в базе данных Oracle. Я использую сервлеты и jsp в качестве backend. Когда имя пользователя зарегистрировано через сервлет java, он находится в oracle db.

Теперь я хочу проверить, доступно ли существующее имя пользователя. Я знаю, как он делает вызов ajax для получения информации, но что я передаю как URL? Должен ли я передать шаблон url сервлета (пример: url:'./getRecords')? или есть ли другой способ сделать это?

Также использовать задний конец как сервлет и jsp - хорошая идея? Интересно, почему люди используют узлы js и mondo DB с угловыми js.

Теги:

2 ответа

1

Моя проблема решена с этим: я использую фрейм MVC framework с угловыми.

Я написал директиву для проверки уникального поля (проверка из БД). Это сценарий: app.js

var base_url="http://localhost/mysystem/";   
 var angularapp = angular.module('angularapp', ['ngRoute','angularControllers','uniqueField']);  
    angularapp.config(['$routeProvider', function($routeProvider){
        $routeProvider
            .when('/add_user', {
                controller : 'AddUserCtrl',
                templateUrl : base_url+'angular/partials/add_user.php'
            })
            .otherwise({
                redirectTo : '/dashboard'
            });
    }]);

    //unique field   --creating directive
    angular.module('uniqueField', [])
    .directive('uniqueField', function($http) {
      var toId;
      return {
        restrict: 'A',
        require: 'ngModel',
        link: function(scope, elem, attr, ctrl) { 
          //when the scope changes, check the field.
          scope.$watch(attr.ngModel, function(value) {
            // if there was a previous attempt, stop it.
            if(toId) clearTimeout(toId);

            // start a new attempt with a delay to keep it from
            toId = setTimeout(function(){
              // call to some API that echo "1" or echo "0"
              $http.get(base_url+'controller/check_unique?check=' + value).success(function(data) {

                //set the validity of the field
                if (data == "1") 
                {
                    ctrl.$setValidity('uniqueField', false);
                }
                else if (data == "0")
                {
                    ctrl.$setValidity('uniqueField', true);
                }
              });
            }, 200);
          })
        }
      }
    });

Это HTML:

User Name: <input required type="text"  ng-model="uname" name="uname" id="uname" unique-field  /><br/>
    <span style="color:red" ng-show="form_add.uname.$dirty && form_add.uname.$invalid">
        <span ng-show="form_add.uname.$error.required">User Name is required.</span>    
        <span ng-show="form_add.uname.$error.uniqueField">User Name already exists.</span>
    </span>

Примечание: кнопка отправки отключается, если имя пользователя уже существует. Надеюсь, это поможет.

-2

Задняя часть и передняя часть полностью раздельны. Большинство вызовов AngularJS являются стандартными HTTP-запросами, используя $http. Не имеет значения, какой серверный язык или БД используется сервером, что по сути является черным ящиком, что касается реализации на передней панели.

Вам нужен веб-интерфейс на вашем сервере, который можно запросить, чтобы проверить, существует ли имя пользователя или нет. Затем просто вызовите этот URL, используя $http с нужным именем пользователя в качестве параметра из AngularJS. Затем ваш код на стороне сервера запустит запрос, чтобы определить, является ли имя пользователя уникальным или нет, а затем возвращает полезную нагрузку с указанием, доступна ли она.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню