zoukankan      html  css  js  c++  java
  • 【AngularJS】通过jsonp与webmethod交互,实现ajax验证

    服务端配置

    1:新建一个asp.net的网站

    2: 创建一个服务文件:LoginService.asmx

    注意:记得取消[System.Web.Script.Services.ScriptService]的注释

    因为要使用jsonp来达到跨域访问,所以要声明输出类型和加上callback函数前缀。

    using System.Web.Services;
    
    namespace testService
    {
        /// <summary>
        /// LoginService 的摘要说明
        /// </summary>
        [WebService(Namespace = "zhexian.com")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
        [System.Web.Script.Services.ScriptService]
        public class LoginService : System.Web.Services.WebService
        {
            [WebMethod]
            public void CheckUserNameExist(string username)
            {
                Context.Response.ContentType = "application/x-javascript";
                string result = username == "kimmy" ? "true" : "false";
                string callBackName = Context.Request.QueryString["callback"];
                Context.Response.Write(callBackName + "({"isUnique":"" + result + ""})");
            }
        }
    }

    3:配置web.config

    在web.config, <system.web>下,加入字段

     <webServices>
          <protocols>
            <add name="HttpPost"/>
            <add name="HttpGet"/>
          </protocols>
        </webServices>

    网页配置

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset=utf-8 />
    <title>入门入门</title>
    <link rel="stylesheet" href="http://cdn.jsdelivr.net/foundation/4.3.2/css/foundation.min.css">
    <style type="text/css">
    </style>
    </head>
    <body ng-app="myApp">
    <form name="singnupForm" novalidate ng-submit="signupForm()">
    <fieldset>
        <legend>注册</legend>
     <div>
    
      <div class="row">
          <div class="large-12 columns">
              
              <input type="text" placeholder="用户名" name="name" ng-model="user.name" ng-minlength="2" ng-maxlength="20" ensure-unique="name"  required />
    
          <div class="error" ng-show="singnupForm.name.$dirty && singnupForm.name.$invalid">
              <small class="error" ng-show="singnupForm.name.$error.required">
                  请录入用户名
              </small>
           <small class="error" ng-show="singnupForm.name.$error.minlength">
            最少2个字符
           </small>
           <small class="error" ng-show="singnupForm.name.$error.maxlength">
               最多20个字符
           </small>
           <small class="error" ng-show="singnupForm.name.$error.unique">
               用户名已经存在
           </small>
          </div>
      </div>
      </div>
    
      <div class="row">
          <div class="large-12 columns">
      <input type="password" placeholder="密码" name="pwd" ng-model="user.pwd" ng-minlength="5" required />
          <div class="error" ng-show="singnupForm.pwd.$dirty && singnupForm.pwd.$invalid">
          <small class="error" ng-show="singnupForm.pwd.$error.required">
                  请录入密码
              </small>
           <small class="error" ng-show="singnupForm.pwd.$error.minlength">
            最少5个字符
           </small>
          </div>
          </div>
     </div>
    
    <div class="row">
          <div class="large-12 columns">
          <input type="email" placeholder="邮件地址" name="email" ng-model="user.email" ng-minlength="5" ng-maxlength="20" required />
       <div class="error" ng-show="singnupForm.email.$dirty && singnupForm.email.$invalid">
          <small clss="error" ng-show="singnupForm.email.$error.required">
              请录入邮件地址
          </small>
          <small class="error" ng-show="singnupForm.email.$error.email">
              邮件地址不正确
          </small>
          <small class="error" ng-show="singnupForm.email.$error.minlength">
              最少3个字符
          </small>
          <small class="error" ng-show="singnupForm.email.$error.maxlength">
              最长20个字符
          </small>
      </div>
     </div>
     </div>
    
    <div class="row">
          <div class="large-12 columns">
          <input type="number" placeholder="年龄" name="age" ng-model="user.age" ng-minlength="1" required />
       <div class="error" ng-show="singnupForm.age.$dirty && singnupForm.age.$invalid">
          <small clss="error" ng-show="singnupForm.age.$error.required">
              请录入年龄
          </small>
          <small class="error" ng-show="singnupForm.age.$error.number">
              年龄格式不正确
          </small>
      </div>
      <button type="submit" ng-disabled="singnupForm.$invalid" class="button radius">submit</button>
     </div>
     </div>
    
    </fieldset>
    </form>
    <script src="angular.min.js"></script>
    </body>
    </html>

    JS部分,加在Body前面

    <script type="text/javascript">
        var myApp = angular.module('myApp',[]);
    
        myApp.directive('ensureUnique',function ($http) {
    
             return {
                 require:'ngModel',
                 link:function(scope,ele,attrs,c){
                   scope.$watch(attrs.ngModel,function (n) {
    
                       if (!n) 
                           return;
    
                 $http.jsonp(
                    'http://192.168.18.114:3301/LoginService.asmx/CheckUserNameExist?callback=JSON_CALLBACK',
                    {
                        params  :{'username':scope.user.name}
                    }
                   ).success(function (data) {
                   var isUnique = data && data.isUnique && data.isUnique.toLowerCase()=="true";
    
                       c.$setValidity('unique',isUnique);
                   }).error(function  (data) {
                   
                        c.$setValidity('unique',false);
                   });
                 });
              }
             };
        });
    </script>
  • 相关阅读:
    JID 2.0 RC4 发布,高性能的 Java 序列化库
    FBReaderJ 1.6.3 发布,Android 电子书阅读器
    Arquillian 1.0.3.Final 发布,单元测试框架
    JavaScript 的宏扩展 Sweet.js
    Hypertable 0.9.6.5 发布,分布式数据库
    JRuby 1.7.0 发布,默认使用 Ruby 1.9 模式
    httppp 1.4.0 发布,HTTP响应时间监控
    Redis 2.6.0 正式版发布,高性能K/V服务器
    OfficeFloor 2.5.0 发布,IoC 框架
    XWiki 4.3 首个里程碑发布
  • 原文地址:https://www.cnblogs.com/kimmy/p/4140429.html
Copyright © 2011-2022 走看看