Jquery ajax调用webservice总结

jquery ajax调用webservice(C#)要注意的几个事项:

1、web.config里需要配置2个地方

<httpHandlers>
       <remove verb="*" path="*.asmx"/>
       <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
     </httpHandlers>
 在<system.web></system.web>之间加入
 <webServices>
       <protocols>
         <add name="HttpPost" />
         <add name="HttpGet" />
       </protocols>
     </webServices>

2.正确地编写webserivce的代码



///
     
      
     
     <summary>
     
     
    
     
     ///
     
      UserValidate 的摘要说明
    
     
     ///
     
      
     
     </summary>
     
     

     
         [WebService(Namespace 
     
     =
     
      
     
     "
     
     http://tempuri.org/
     
     "
     
     )]
    [WebServiceBinding(ConformsTo 
     
     =
     
      WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(
     
     false
     
     )]
    
     
     //
     
      若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
     
     

     
          [System.Web.Script.Services.ScriptService]
    
     
     public
     
      
     
     class
     
      UserValidate : System.Web.Services.WebService
    {
        DFHon.Content.Common.rootPublic rp 
     
     =
     
      
     
     new
     
      DFHon.Content.Common.rootPublic();
        [WebMethod]
        [ScriptMethod(ResponseFormat 
     
     =
     
      ResponseFormat.Json)]
        
     
     public
     
      
     
     string
     
      ValidateUserLogState()
        {
            
     
     string
     
      result 
     
     =
     
      
     
     ""
     
     ;
            HttpCookie cookie 
     
     =
     
      HttpContext.Current.Request.Cookies[
     
     "
     
     DHFonMenberInfo
     
     "
     
     ];
            
     
     if
     
      (cookie 
     
     !=
     
      
     
     null
     
     )
            {
                
     
     string
     
      username 
     
     =
     
      System.Web.HttpUtility.UrlDecode(cookie[
     
     "
     
     MenberName
     
     "
     
     ]);
                
     
     int
     
      ipoint 
     
     =
     
      
     
     0
     
     ;
                
     
     int
     
      gpoint 
     
     =
     
      
     
     0
     
     ;
                
     
     try
     
     
                {
                    DataTable dt 
     
     =
     
      UserBll.ExecuteUserAllInfo(username);

                    
     
     if
     
      (dt.Rows.Count 
     
     >
     
      
     
     0
     
     )
                    {
                        ipoint 
     
     =
     
      
     
     int
     
     .Parse(dt.Rows[
     
     0
     
     ][
     
     "
     
     iPoint
     
     "
     
     ].ToString());
                        gpoint 
     
     =
     
      
     
     int
     
     .Parse(dt.Rows[
     
     0
     
     ][
     
     "
     
     gPoint
     
     "
     
     ].ToString());
                    }
                }
                
     
     catch
     
     
                { }
                result 
     
     =
     
      
     
     "
     
     {'user':{'id':'
     
     "
     
      
     
     +
     
      cookie[
     
     "
     
     UserId
     
     "
     
     ] 
     
     +
     
      
     
     "
     
     ','name':'
     
     "
     
      
     
     +
     
      username 
     
     +
     
      
     
     "
     
     ','message':'
     
     "
     
      
     
     +
     
      rp.getUserMsg(DFHon.Global.CurrentCookie.UserName) 
     
     +
     
      
     
     "
     
     ','ipoint':'
     
     "
     
      
     
     +
     
      ipoint.ToString() 
     
     +
     
      
     
     "
     
     ','gpoint':'
     
     "
     
      
     
     +
     
      gpoint.ToString() 
     
     +
     
      
     
     "
     
     '}}
     
     "
     
     ;
            }
            
     
     else
     
     
            {
                result 
     
     =
     
      
     
     "
     
     {'user':{'id':'0','name':'','message':'0','ipoint':'0','gpoint':'0'}}
     
     "
     
     ;
            }
            
     
     return
     
      result;
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat 
     
     =
     
      ResponseFormat.Json)]
        
     
     public
     
      
     
     string
     
      UserLogin(
     
     string
     
      userName, 
     
     string
     
      userPwd)
        {
            
     
     string
     
      returnVal 
     
     =
     
      
     
     ""
     
     ;
            
     
     try
     
     
            {
                GlobalUserInfo info;
                DFHon.Content.UserLogin _UserLogin 
     
     =
     
      
     
     new
     
      DFHon.Content.UserLogin();
                EnumLoginState state 
     
     =
     
      _UserLogin.PersonLogin(HttpUtility.UrlDecode(userName), userPwd, 
     
     out
     
      info);
                
     
     if
     
      (state 
     
     ==
     
      EnumLoginState.Succeed)
                {
                    DFHon.Global.CurrentCookie.Set(info);
                    DFHon.API.PDO.DiscuzNT.PassportLogin.UserLogin(Server.UrlDecode(userName), userPwd, 
     
     -
     
     1
     
     );
                    
     
     int
     
      ipoint 
     
     =
     
      
     
     0
     
     ;
                    
     
     int
     
      gpoint 
     
     =
     
      
     
     0
     
     ;
                    DataTable dt 
     
     =
     
      UserBll.ExecuteUserAllInfo(userName);

                    
     
     if
     
      (dt.Rows.Count 
     
     >
     
      
     
     0
     
     )
                    {
                        ipoint 
     
     =
     
      
     
     int
     
     .Parse(dt.Rows[
     
     0
     
     ][
     
     "
     
     iPoint
     
     "
     
     ].ToString());
                        gpoint 
     
     =
     
      
     
     int
     
     .Parse(dt.Rows[
     
     0
     
     ][
     
     "
     
     gPoint
     
     "
     
     ].ToString());
                    }
                    returnVal 
     
     =
     
      
     
     "
     
     {'user':{'id':'
     
     "
     
      
     
     +
     
      info.UserId.ToString() 
     
     +
     
      
     
     "
     
     ','name':'
     
     "
     
      
     
     +
     
      info.UserName 
     
     +
     
      
     
     "
     
     ','message':'
     
     "
     
      
     
     +
     
      rp.getUserMsg(userName) 
     
     +
     
      
     
     "
     
     ','ipoint':'
     
     "
     
      
     
     +
     
      ipoint.ToString() 
     
     +
     
      
     
     "
     
     ','gpoint':'
     
     "
     
      
     
     +
     
      gpoint.ToString() 
     
     +
     
      
     
     "
     
     '}}
     
     "
     
     ;
                }
                
     
     else
     
     
                {
                    
     
     int
     
      ids 
     
     =
     
      
     
     0
     
     ;
     
     //
     
     状态:-2用户被锁定 -1用户名密码错误
     
     

     
                         
     
     switch
     
      (state)
                    {
                        
     
     case
     
      EnumLoginState.Err_Locked:
                            ids 
     
     =
     
      
     
     -
     
     2
     
     ;
                            
     
     break
     
     ;
                        
     
     case
     
      EnumLoginState.Err_UserNameOrPwdError:
                            ids 
     
     =
     
      
     
     -
     
     1
     
     ;
                            
     
     break
     
     ;
                        
     
     default
     
     :
                            
     
     break
     
     ;
                    }
                    returnVal 
     
     =
     
      
     
     "
     
     {'user':{'id':'
     
     "
     
      
     
     +
     
      ids 
     
     +
     
      
     
     "
     
     ','name':'','message':'0','ipoint':'0','gpoint':'0'}}
     
     "
     
     ;
                }
            }
            
     
     catch
     
     
            {
                returnVal 
     
     =
     
      
     
     "
     
     {'user':{'id':'0','name':'','message':'0','ipoint':'0','gpoint':'0'}}
     
     "
     
     ;
            }
            
     
     return
     
      returnVal;
        }
        [WebMethod]
        
     
     public
     
      
     
     string
     
      UserLogout()
        {
            
     
     if
     
      (HttpContext.Current.Request.Cookies[
     
     "
     
     DHFonMenberInfo
     
     "
     
     ] 
     
     !=
     
      
     
     null
     
     )
            {
                HttpCookie cookie 
     
     =
     
      
     
     new
     
      HttpCookie(
     
     "
     
     DHFonMenberInfo
     
     "
     
     );
                cookie.Expires 
     
     =
     
      System.DateTime.Now.AddDays(
     
     -
     
     1
     
     );
                cookie.Domain 
     
     =
     
      DFHon.Config.BaseConfig.getV(
     
     "
     
     weblogin
     
     "
     
     );
                HttpContext.Current.Response.AppendCookie(cookie);
            }
            
     
     return
     
      
     
     "
     
     1
     
     "
     
     ;
        }
        DFHon.Content.user UserBll 
     
     =
     
      
     
     new
     
      DFHon.Content.user();
        [WebMethod]
        
     
     public
     
      
     
     string
     
      ValidateUserEmail(
     
     string
     
      email)
        {
            
     
     string
     
      result 
     
     =
     
      
     
     "
     
     0
     
     "
     
     ;
     
     //
     
     返回的结果 -2邮箱为空 -1邮箱格式不正确 0邮箱存在 1填写正确
     
     

     
                 
     
     if
     
      (
     
     string
     
     .IsNullOrEmpty(email))
            {
                result 
     
     =
     
      
     
     "
     
     -2
     
     "
     
     ;
     
     //
     
     邮箱为空
     
     

     
                 }
            
     
     else
     
      
     
     if
     
      (
     
     !
     
     IsValidEmail(email))
            {
                result 
     
     =
     
      
     
     "
     
     -1
     
     "
     
     ;
     
     //
     
     邮箱格式不正确
     
     

     
                 }
            
     
     else
     
      
     
     if
     
      (UserBll.sel_useremail(email) 
     
     >
     
      
     
     0
     
     )
            {
                result 
     
     =
     
      
     
     "
     
     0
     
     "
     
     ;
     
     //
     
     邮箱存在
     
     

     
                 }
            
     
     else
     
     
            {
                result 
     
     =
     
      
     
     "
     
     1
     
     "
     
     ;
     
     //
     
     可以注册
     
     

     
                 }
            
     
     return
     
      result;
        }

        [WebMethod]
        
     
     public
     
      
     
     string
     
      ValidateUserName(
     
     string
     
      username)
        {
            
     
     string
     
      result 
     
     =
     
      
     
     "
     
     0
     
     "
     
     ;
     
     //
     
     返回值:-1用户名长度为2-16;0用户名存在;1可以注册
     
     

     
                 
     
     if
     
      (username 
     
     ==
     
      
     
     ""
     
      
     
     ||
     
      username 
     
     ==
     
      
     
     null
     
      
     
     ||
     
      username.Length 
     
     <
     
      
     
     2
     
      
     
     ||
     
      username.Length 
     
     >
     
      
     
     16
     
     )
            {
                result 
     
     =
     
      
     
     "
     
     -1
     
     "
     
     ;
            }
            
     
     else
     
      
     
     if
     
      (UserBll.sel_username(username) 
     
     !=
     
      
     
     0
     
     )
            {
                result 
     
     =
     
      
     
     "
     
     0
     
     "
     
     ;
            }
            
     
     else
     
     
            {
                result 
     
     =
     
      
     
     "
     
     1
     
     "
     
     ;
            }
            
     
     return
     
      result;
        }

        
     
     public
     
      
     
     bool
     
      IsValidEmail(
     
     string
     
      strIn)
        { 
     
     //
     
      Return true if strIn is in valid e-mail format. 
     
     

     
                 
     
     return
     
      System.Text.RegularExpressions.Regex.IsMatch(strIn, 
     
     @"
     
     ^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$
     
     "
     
     );
        }
    }


3、前台JQuery代码




<
     
     script
     
     >
     
     
        $(
     
     function
     
     () {
            $(
     
     "
     
     #userloging
     
     "
     
     ).show();
            
     
     //
     
     登录框处理开始
     
     

     
                 
     
     //
     
     加载登录状态
     
     

     
                 $.ajax({
                type: 
     
     "
     
     POST
     
     "
     
     , 
     
     //
     
     访问WebService使用Post方式请求
     
     

     
                     contentType: 
     
     "
     
     application/json;charset=utf-8
     
     "
     
     , 
     
     //
     
     WebService 会返回Json类型
     
     

     
                     url: 
     
     "
     
     /API/Service/UserValidate.asmx/ValidateUserLogState
     
     "
     
     , 
     
     //
     
     调用WebService
     
     

     
                     data: 
     
     "
     
     {}
     
     "
     
     , 
     
     //
     
     Email参数
     
     

     
                     dataType: 
     
     '
     
     json
     
     '
     
     ,
                beforeSend: 
     
     function
     
     (x) { x.setRequestHeader(
     
     "
     
     Content-Type
     
     "
     
     , 
     
     "
     
     application/json; charset=utf-8
     
     "
     
     ); },
                error: 
     
     function
     
     (x, e) { },
                success: 
     
     function
     
     (response) { 
     
     //
     
     回调函数,result,返回值
     
     

     
                         $(
     
     "
     
     #userloging
     
     "
     
     ).hide();
                    
     
     var
     
      json 
     
     =
     
      eval(
     
     '
     
     (
     
     '
     
      
     
     +
     
      response.d 
     
     +
     
      
     
     '
     
     )
     
     '
     
     );
                    
     
     var
     
      userid 
     
     =
     
      json.user.id;
                    
     
     if
     
      (userid 
     
     >
     
      
     
     0
     
     ) {
                        $(
     
     "
     
     #spanusername
     
     "
     
     ).html(json.user.name);
                        $(
     
     "
     
     #spanmessagenum
     
     "
     
     ).html(json.user.message);
                        $(
     
     "
     
     #userloginsucced
     
     "
     
     ).show();
                        $(
     
     "
     
     #userloginbox
     
     "
     
     ).hide();
                    }
                }
            });
            
     
     //
     
     登录
     
     

     
                 $(
     
     "
     
     #userlogbutton
     
     "
     
     ).click(
     
     function
     
     () {
               
                
     
     var
     
      username 
     
     =
     
      $(
     
     "
     
     #username
     
     "
     
     ).val();
                
     
     var
     
      userpwd 
     
     =
     
      $(
     
     "
     
     #userpassword
     
     "
     
     ).val();
                
     
     if
     
      (username 
     
     !=
     
      
     
     ""
     
      
     
     &&
     
      userpwd 
     
     !=
     
      
     
     ""
     
     ) {
                    $(
     
     "
     
     #userloging
     
     "
     
     ).show();
                    $.ajax({
                        type: 
     
     "
     
     POST
     
     "
     
     , 
     
     //
     
     访问WebService使用Post方式请求
     
     

     
                             contentType: 
     
     "
     
     application/json;charset=utf-8
     
     "
     
     , 
     
     //
     
     WebService 会返回Json类型
     
     

     
                             url: 
     
     "
     
     /API/Service/UserValidate.asmx/UserLogin
     
     "
     
     , 
     
     //
     
     调用WebService
     
     

     
                             data: 
     
     "
     
     {userName:'
     
     "
     
      
     
     +
     
      username 
     
     +
     
      
     
     "
     
     ',userPwd:'
     
     "
     
      
     
     +
     
      userpwd 
     
     +
     
      
     
     "
     
     '}
     
     "
     
     , 
     
     //
     
     Email参数
     
     

     
                             dataType: 
     
     '
     
     json
     
     '
     
     ,
                        beforeSend: 
     
     function
     
     (x) { x.setRequestHeader(
     
     "
     
     Content-Type
     
     "
     
     , 
     
     "
     
     application/json; charset=utf-8
     
     "
     
     ); },
                        error: 
     
     function
     
     (x, e) {
                        },
                        success: 
     
     function
     
     (result) { 
     
     //
     
     回调函数,result,返回值
     
     

     
                                 $(
     
     "
     
     #userloging
     
     "
     
     ).hide();
                            
     
     var
     
      json 
     
     =
     
      eval(
     
     '
     
     (
     
     '
     
      
     
     +
     
      result.d 
     
     +
     
      
     
     '
     
     )
     
     '
     
     );
                            
     
     var
     
      userid 
     
     =
     
      json.user.id;
                            
     
     if
     
      (userid 
     
     >
     
      
     
     0
     
     ) {
                                $(
     
     "
     
     #spanusername
     
     "
     
     ).html(json.user.name);
                                $(
     
     "
     
     #spanmessagenum
     
     "
     
     ).html(json.user.message);
                                $(
     
     "
     
     #userloginsucced
     
     "
     
     ).show();
                                $(
     
     "
     
     #userloginbox
     
     "
     
     ).hide();
                            }
                            
     
     else
     
      {
                                
     
     switch
     
      (userid) {
                                    
     
     case
     
      
     
     -
     
     2
     
     :
                                        alert(
     
     "
     
     用户被锁定!请30分钟后再登录!
     
     "
     
     );
                                        $(
     
     "
     
     #username
     
     "
     
     ).focus();
                                        
     
     break
     
     ;
                                    
     
     case
     
      
     
     -
     
     1
     
     :
                                        alert(
     
     "
     
     用户名或密码错误!请核对您的用户名和密码!
     
     "
     
     );
                                        $(
     
     "
     
     #userpassword
     
     "
     
     ).focus();
                                        
     
     break
     
     ;
                                    
     
     default
     
     :
                                        alert(
     
     "
     
     登录失败!请核对您的用户名和密码之后重试!
     
     "
     
     );
                                        $(
     
     "
     
     #userpassword
     
     "
     
     ).focus();
                                        
     
     break
     
     ;
                                }
                            }
                        }
                    });
                }
                
     
     else
     
      
     
     if
     
      (username 
     
     ==
     
      
     
     ""
     
     ) {
                    alert(
     
     "
     
     用户名不能为空!
     
     "
     
     );
                    $(
     
     "
     
     #username
     
     "
     
     ).focus();
                }
                
     
     else
     
      
     
     if
     
      (userpwd 
     
     ==
     
      
     
     ""
     
     ) {
                    alert(
     
     "
     
     密码不能为空!
     
     "
     
     );
                    $(
     
     "
     
     #userpassword
     
     "
     
     ).focus();
                }
            });
            
     
     //
     
     退出
     
     

     
                 $(
     
     "
     
     #logout
     
     "
     
     ).click(
     
     function
     
     () {
                $(
     
     "
     
     #userloging
     
     "
     
     ).show();
                $.ajax({
                    type: 
     
     "
     
     POST
     
     "
     
     , 
     
     //
     
     访问WebService使用Post方式请求
     
     

     
                         contentType: 
     
     "
     
     application/json;utf-8
     
     "
     
     , 
     
     //
     
     WebService 会返回Json类型
     
     

     
                         url: 
     
     "
     
     /API/Service/UserValidate.asmx/UserLogout
     
     "
     
     , 
     
     //
     
     调用WebService
     
     

     
                         data: 
     
     "
     
     {}
     
     "
     
     , 
     
     //
     
     Email参数
     
     

     
                         dataType: 
     
     '
     
     json
     
     '
     
     ,
                    beforeSend: 
     
     function
     
     (x) { x.setRequestHeader(
     
     "
     
     Content-Type
     
     "
     
     , 
     
     "
     
     application/json; charset=utf-8
     
     "
     
     ); },
                    success: 
     
     function
     
     (result) { 
     
     //
     
     回调函数,result,返回值
     
     

     
                             $(
     
     "
     
     #userloging
     
     "
     
     ).hide();
                        
     
     if
     
      (result.d 
     
     >
     
      
     
     0
     
     ) {
                            $(
     
     "
     
     #userloginsucced
     
     "
     
     ).hide();
                            $(
     
     "
     
     #userloginbox
     
     "
     
     ).show();
                        }
                    }
                });

            }); 
     
     //
     
     登录框处理结束
     
     

     
     
        });
        
     
     <
     
     /
     
     script>