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..
|
6月前
|
XML JSON 前端开发
jQuery实现Ajax
jQuery实现Ajax
N..
68 1
|
6月前
|
XML 前端开发 JavaScript
jQuery中ajax如何使用
jQuery中ajax如何使用
69 0
|
5月前
|
前端开发 JavaScript
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]
46 0
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]
|
3月前
|
XML JSON 前端开发
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
33 0
|
3月前
|
JavaScript 前端开发
Ajax的使用(jquery的下载)
这篇文章是关于Ajax学习笔记的分享,包括JQuery的下载方式、Ajax的主要参数说明,以及如何在网页中使用Ajax进行异步请求的示例代码。
|
5月前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
|
6月前
|
前端开发 JavaScript PHP
【PHP开发专栏】jQuery与PHP实现Ajax通信
【4月更文挑战第30天】本文介绍了使用jQuery和PHP实现Ajax通信的步骤。首先,讲解了Ajax的基础和jQuery简化Ajax操作的概念。接着,展示了如何使用jQuery的`$.get()`、`$.post()`和`$.ajax()`方法发送GET和POST请求,以及如何控制请求细节。在PHP端,讨论了接收和响应Ajax请求的方法,包括处理数据、设置响应类型和错误处理。结合jQuery与PHP,开发者能实现高效、无缝的异步数据传输,提升Web应用的用户体验。
124 1
|
6月前
|
JSON 前端开发 JavaScript
jQuery ajax读取本地json文件 三级联动下拉框
jQuery ajax读取本地json文件 三级联动下拉框
|
6月前
|
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 平台开发而创建。 作
310 2
|
6月前
|
JavaScript 前端开发 Java
jquery ajax+spring mvc上传文件
jquery ajax+spring mvc上传文件