在angularjs中验证数据库中的数据

时间:2016-07-07 10:56:55

标签: javascript php angularjs

我在我的项目中使用angularjs。在进程/模块中,如果数据库中已存在某个数据输入,则不会提交表单。例如,此过程:注册/注册。如果用户输入了已被某人使用的用户名,则不会提交该表单。并且将在用户通过比较(在for循环中)输入数据之前加载用户名列表的控制器中进行检查。我的问题是,这是检查数据的好方法还是我必须使用$ http?

编辑:

<div class="col-xs-6 col-sm-6 col-md-6">
     <div class="form-group"><label class="control-label">Username</label>
        <input type="text" ng-model="reg.username" usernameAvailable 
           name="username" class="form-control input-md" 
            placeholder="Username" required />
         <div ng-if="regForm.$pending.usernameExists">checking....</div>
         <div ng-if="regForm.$error.usernameExists">username exists
                already
         </div>
     </div>
</div>

mainApp.directive('usernameAvailable', function($timeout, $q, $http) {
   return {
     restrict: 'AE',
     require: 'ngModel',
     link: function(scope, elm, attr, model) { 
        model.$asyncValidators.usernameExists = function() { 
          //here you should access the backend, to check if username exists
          //and return a promise
          // var defer = $q.defer();
          // $timeout(function(){
          //   model.$setValidity('usernameExists', true); 
          //   defer.resolve;
          // }, 1000);
          // return defer.promise;
           console.log(model);
           return $http.get(BASE_URL+'Register/validate?u='+username).
               then(function(res){+$timeout(function(){
                 model.$setValidity('usernameExists', !!res.data); 
               }, 1000);
           }); 
        };
     }
  } 
});

Php控制器:

public function validate(){


    $this->load->model('account_model');  
    $data =$this->account_model->exist($this->input->get('u'));
    echo json_encode($data);
}

1 个答案:

答案 0 :(得分:0)

您应该将数据带到服务器。在那里,应该在db中触发查询以检查此数据是否已存在。如果确实如此,则在UI上显示错误消息,并且不保存其他明智的保存,并保存成功消息。

火灾查询(示例)类似于:

 SELECT * FROM users WHERE username='myName'

如果记录大于0,那么你拥有的是重复值。

不要在UI上获取所有记录,然后遍历它们。

想一想:

  1. 如果有1百万或更多记录怎么办?
  2. 安全? (您将所有用户名都收到客户端)
  3. 等等。

    希望它能指导你。