Home > Web Front-end > JS Tutorial > body text

Summary of Jquery ajax calling webservice

一个新手
Release: 2017-10-09 09:44:40
Original
2127 people have browsed it

Jquery ajax calls webservice (C#). Several things to pay attention to:

1. Two places need to be configured in web.config

<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>
Copy after login

2. Write the code of webserivce correctly


##

/// <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 = "{&#39;user&#39;:{&#39;id&#39;:&#39;" + cookie["UserId"] + "&#39;,&#39;name&#39;:&#39;" + username + "&#39;,&#39;message&#39;:&#39;" + rp.getUserMsg(DFHon.Global.CurrentCookie.UserName) + "&#39;,&#39;ipoint&#39;:&#39;" + ipoint.ToString() + "&#39;,&#39;gpoint&#39;:&#39;" + gpoint.ToString() + "&#39;}}";
            }
            else
            {
                result = "{&#39;user&#39;:{&#39;id&#39;:&#39;0&#39;,&#39;name&#39;:&#39;&#39;,&#39;message&#39;:&#39;0&#39;,&#39;ipoint&#39;:&#39;0&#39;,&#39;gpoint&#39;:&#39;0&#39;}}";
            }
            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 = "{&#39;user&#39;:{&#39;id&#39;:&#39;" + info.UserId.ToString() + "&#39;,&#39;name&#39;:&#39;" + info.UserName + "&#39;,&#39;message&#39;:&#39;" + rp.getUserMsg(userName) + "&#39;,&#39;ipoint&#39;:&#39;" + ipoint.ToString() + "&#39;,&#39;gpoint&#39;:&#39;" + gpoint.ToString() + "&#39;}}";
                }
                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 = "{&#39;user&#39;:{&#39;id&#39;:&#39;" + ids + "&#39;,&#39;name&#39;:&#39;&#39;,&#39;message&#39;:&#39;0&#39;,&#39;ipoint&#39;:&#39;0&#39;,&#39;gpoint&#39;:&#39;0&#39;}}";
                }
            }
            catch
            {
                returnVal = "{&#39;user&#39;:{&#39;id&#39;:&#39;0&#39;,&#39;name&#39;:&#39;&#39;,&#39;message&#39;:&#39;0&#39;,&#39;ipoint&#39;:&#39;0&#39;,&#39;gpoint&#39;:&#39;0&#39;}}";
            }
            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})(\]?)$");
        }
    }

WebService
Copy after login

WebService


<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: &#39;json&#39;,
                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(&#39;(&#39; + response.d + &#39;)&#39;);
                    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:&#39;" + username + "&#39;,userPwd:&#39;" + userpwd + "&#39;}", //Email参数
                        dataType: &#39;json&#39;,
                        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(&#39;(&#39; + result.d + &#39;)&#39;);
                            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: &#39;json&#39;,
                    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
Copy after login

The above is the detailed content of Summary of Jquery ajax calling webservice. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!