Jquery ajax调用webservice总结

简介:

转自原文 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的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/// <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>
复制代码

 同时,Ajax的请求,可以参考 使用Jquery Ajax的webservice请求来实现更简练的Ajax。

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。


    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/7168474.html ,如需转载请自行联系原作者





相关文章
N..
|
1月前
|
XML JSON 前端开发
jQuery实现Ajax
jQuery实现Ajax
N..
18 1
|
1月前
|
XML 开发框架 .NET
C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService
## 第二部分:ADO.NET、XML、HTTP、AJAX、WebService #### 1. .NET 和 C# 有什么区别? .NET(通用语言运行时): ```c# 定义:.NET 是一个软件开发框架,提供了一个通用的运行时环境,用于在不同的编程语言中执行代码。 作用:它为多语言支持提供了一个统一的平台,允许不同的语言共享类库和其他资源。.NET 包括 Common Language Runtime (CLR)、基础类库(BCL)和其他工具。 ``` C#(C Sharp): ```c# 定义: C# 是一种由微软设计的面向对象的编程语言,专门为.NET 平台开发而创建。 作
174 2
|
2月前
|
JavaScript 前端开发 Java
jquery ajax+spring mvc上传文件
jquery ajax+spring mvc上传文件
|
3月前
|
前端开发 JavaScript
Jquery ajax捕获错误信息
Jquery ajax捕获错误信息
16 0
|
3月前
|
JSON 缓存 前端开发
Jquery中AJAX的应用
Jquery中AJAX的应用
43 0
|
4月前
|
JSON 前端开发 JavaScript
jQuery中ajax的使用
jQuery中ajax的使用
|
4月前
|
XML JavaScript 前端开发
【Web智能聊天客服】之JavaScript、jQuery、AJAX讲解及实例(超详细必看 附源码)
【Web智能聊天客服】之JavaScript、jQuery、AJAX讲解及实例(超详细必看 附源码)
52 0