原文:http://www.cnblogs.com/andiki/archive/2010/05/17/1737254.html

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>

Jquery Ajax 调用 WebService的更多相关文章

  1. Jquery ajax调用webservice总结

    jquery ajax调用webservice(C#)要注意的几个事项: 1.web.config里需要配置2个地方 <httpHandlers>      <remove verb ...

  2. Jquery AJAX 调用WebService服务

    对Jquery+JSON+WebService的一点认识 文章不错:http://www.cnblogs.com/tyb1222/archive/2011/10/13/2210549.html Jqu ...

  3. Ajax调用WebService接口样例

    在做手机端h5的应用时,通过Ajax调用http接口时没啥问题的:但有些老的接口是用WebService实现的,也来不及改成http的方式,这时通过Ajax调用会有些麻烦,在此记录具体实现过程.本文使 ...

  4. Ajax调用WebService

    前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1 ...

  5. Ajax调用WebService(一)

    Ajax调用WebService(一) http://www.cnblogs.com/leslies2/archive/2011/01/26/1934889.html 分类: Ajax 使用技术 We ...

  6. jquery ajax调用返回json格式数据处理

    Ajax请求默认的都是异步的 如果想同步 async设置为false就可以(默认是true) var html = $.ajax({ url: "some.php", async: ...

  7. WCF入门教程(四)通过Host代码方式来承载服务 一个WCF使用TCP协议进行通协的例子 jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding System.ServiceModel.WSHttpBinding协议 学习WCF笔记之二 无废话WCF入门教程一[什么是WCF]

    WCF入门教程(四)通过Host代码方式来承载服务 Posted on 2014-05-15 13:03 停留的风 阅读(7681) 评论(0) 编辑 收藏 WCF入门教程(四)通过Host代码方式来 ...

  8. ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段

    ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...

  9. Jquery Ajax调用asmx出错问题

    1.//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释.      [System.Web.Script.Services.ScriptService] 这个 ...

随机推荐

  1. 从 NavMesh 网格寻路回归到 Grid 网格寻路。

    上一个项目的寻路方案是客户端和服务器都采用了 NavMesh 作为解决方案,当时的那几篇文章(一,二,三)是很多网友留言和后台发消息询问最多的,看来这个方案有着广泛的需求.但因为是商业项目,我无法贴出 ...

  2. linux驱动程序之电源管理之新版linux系统设备架构中关于电源管理方式的变更

    新版linux系统设备架构中关于电源管理方式的变更 based on linux-2.6.32 一.设备模型各数据结构中电源管理的部分 linux的设备模型通过诸多结构体来联合描述,如struct d ...

  3. cs编写php字符显示问题

    1.  mysql中有mysql字符,数据库字符(各个数据库字符可不同),数据库下的表字符,表的字段字符,这些字符应保持一致具体查询命令可见网上,如不同要设置成相同才行. 2.  因为浏览器版本不同所 ...

  4. CodeForces 540E - Infinite Inversions(离散化+树状数组)

    花了近5个小时,改的乱七八糟,终于A了. 一个无限数列,1,2,3,4,...,n....,给n个数对<i,j>把数列的i,j两个元素做交换.求交换后数列的逆序对数. 很容易想到离散化+树 ...

  5. Ejabberd2:安装和操作指南(centos yum 安装ejabberd)

    (1)首先安装EPEL Repository     ## RHEL/CentOS 6 32-Bit ##  # wget http://download.fedoraproject.org/pub/ ...

  6. Installutil.exe 注册exe

    进入到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe目录下,然后输入Installutil.exe 文件路径实现注册   I ...

  7. ASP.NET MVC- 布署

    IIS6.0 1. 安装Microsoft .net FrameWork 4.0安装包; 2. 安装ASP.NET MVC 3; 3. 设置“Web扩展服务”中的“ASP.NET v4.0.0.303 ...

  8. 为什么在Windows有两个临时文件夹的环境变量Temp和Tmp?

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:为什么在Windows有两个临时文件夹的环境变量Temp和Tmp?.

  9. 前缀、中缀、后缀表达式及其相互转化的Java实现

    一.中缀表达式转换为前缀.后缀表达式 给个中缀表达式:a+b*c-(d+e)    首先根据运算符的优先级给所有运算单位加括号:((a+(b*c))-(d+e))    将运算符号移动到对应括号的前面 ...

  10. 【solr基础教程之九】client

    一.Java Script 1.因为Solr本身能够返回Json格式的结果,而JavaScript对于处理Json数据具有天然的优势,因此使用JavaScript实现Solrclient是一个非常好的 ...