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>