zoukankan      html  css  js  c++  java
  • 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>

      

  • 相关阅读:
    107. Binary Tree Level Order Traversal II
    108. Convert Sorted Array to Binary Search Tree
    111. Minimum Depth of Binary Tree
    49. Group Anagrams
    使用MALTAB标定实践记录
    442. Find All Duplicates in an Array
    522. Longest Uncommon Subsequence II
    354. Russian Doll Envelopes
    opencv 小任务3 灰度直方图
    opencv 小任务2 灰度
  • 原文地址:https://www.cnblogs.com/eric-qin/p/4975330.html
Copyright © 2011-2022 走看看