Jquery ajax调用webservice总结

424 篇文章 1 订阅
348 篇文章 0 订阅
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>
复制代码

 

好文要顶 关注我 收藏该文           
0
0
« 上一篇: C#文档生成黄金搭档Sandcastle+Sandcastle Help File Builder
» 下一篇: Jquery编写注意事项
posted @ 2010-05-17 13:03 幽灵编程 阅读( 25323) 评论( 2) 编辑 收藏

  
#1楼 2013-05-16 21:29 | (二少)在南极  
你的WEB》CONFIG里面的配置放到里面报错呀?是怎么会事?
我的是MVC
  
#2楼 2836223 2013/12/12 22:08:16 2013-12-12 22:08 | YoMe  
请问result.d什么意思?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值