转自原文 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
,如需转载请自行联系原作者