ASP.NET中JQuery+AJAX调用后台

Posted 走出自己的未来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET中JQuery+AJAX调用后台相关的知识,希望对你有一定的参考价值。

    做订餐系统手机端时,遇到一个问题,实现登录功能时,我要调用后台的方法进行验证和判断。我们应用的是webForm进行开发的,正常情况下只要绑定按钮的方法,前后台对应就可以实现。但是,手机端应用MUI样式之后,就不适用于这种情况了。基于这个问题,我们使用JQuery+Ajax技术,其实MUI中也自带ajax技术。

    实现过程:

     webForm代码:       

 function login() {            
            var name = document.getElementById("username").value; //获取用户名
            var password = document.getElementById("userpassword").value;  //获取密码
            var params = '{name:"' + name + '",password:"' + password + '"}';  //将用户名和密码作为参数传过去
            $.ajax({
                url: "LoginMobile.aspx/test",  //调用后台方法
                data: params,
                type: "post",
                dataType: 'text',
                contentType: "application/json; charset=utf-8",  //设置类型,注意一定不能丢
                success: function (data) {                    
                    if (data == '{"d":true}') {  //注意判断条件
                        window.location = "../Order/OrderMobile.aspx";
                    } else {                        
                        mui.toast("用户名或密码错误!");                        
                    }
                }
            });

        }

      后台代码:       

 [WebMethod]
        public static bool test(string name,string password) {
            //实例化登录业务逻辑类
            CardBll cardBll = new CardBll();
            userBll user = new userBll();
            Page page = (Page)System.Web.HttpContext.Current.Handler;
            bool Flag = false;

            //一般用户
            if (name.Length > 5)
            {
                Flag = cardBll.isExist(name, password);
                if (Flag == true)
                {
                    System.Web.HttpContext.Current.Session["Admin"] = name;
                    //Session["Admin"] = name;
                    //Session["Username"] = cardBll.username(TxtName .Text .Trim (),TxtPassword.Text .Trim ());
                    System.Web.HttpContext.Current.Session["Username"] = cardBll.username(name);
                    System.Web.HttpContext.Current.Session["cardLevel"] = cardBll.cardLevel(name);
                    if (System.Web.HttpContext.Current.Session["cardLevel"].ToString() == "普通用户")
                    {
                       Flag = true;
                    }
                }              
               
            }
            return Flag;
        }

    特别注意:

      1、在webForm页面试用Ajax技术调用后台方法时,一定要加上contentType: "application/json; charset=utf-8"。否则,就无法调用后台方法。type类型为“Post”。

      2、后台方法中

          第一,后台的方法必须是静态的;

          第二,方法声明要加上特性[System.Web.Services.WebMethod()];

          第三,传递的参数个数也应该和方法的参数相同。


    当然,也可以使用mui中自由的ajax技术,其使用方法跟平常的ajax没有多大的区别,只是书写的形式有点不一样,使用MUI实现的界面形式如下:      

mui.ajax('LoginMobile.aspx/test', {
                data: params,
                dataType: 'text',
                type: 'post',
                contentType: "application/json; charset=utf-8",
                success: function (data) {                    
                     if (data == '{"d":true}') {
                        window.location = "../Order/OrderMobile.aspx";
                    } else {                        
                        mui.toast("用户名或密码错误!");                        
                    }
                }
            })

    总结:

      ajax技术对于前后台之间的交互也是一种不错的方式,灵活运用会给我们带来巨大的帮助。当然也要根据不同的环境进行不同的设置与使用。

以上是关于ASP.NET中JQuery+AJAX调用后台的主要内容,如果未能解决你的问题,请参考以下文章

Jquery Ajax调用asp.net后台方法

利用JQuery直接调用asp.net后台方法

asp.net jquery ajax post 后台页面获取不到值 怎么解决?

asp.net利用Ajax和Jquery在前台向后台传参数并返回值

asp.net 利用Ajax和Jquery在前台向后台传参数并返回值

使用 JQuery $.AJAX 调用调用 ASP.NET 函数