webform中 ajax调用后台方法(非webservice)

后台:

 public partial class Ajax_ShoppingCart : System.Web.UI.Page
    {
        bookdbDataContext bdc = Connect.bookdb();
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                if(Request.Form["method"]!=null)
                {
                    switch (Request.Form["method"].ToString())
                    {
                        //添加商品至购物车
                        case "addToCart":
                            Response.Write(addToCart());
                            break;
                        //获得购物车
                        case "showCart":
                            Response.Write(showCart());
                            break;
                        //从购物车中删除商品
                        case "removeCart":
                            Response.Write(removeCart());
                            break;
                        //减少购物车中某一商品的数量
                        case "redCount":
                            Response.Write(redCount());
                            break;
                        //增加购物车中某一商品的数量
                        case "addCount":
                            Response.Write(addCount());
                            break;
                        default:
                            break;
                    }
                }
            }
        }

        protected string tid
        {
            get
            {
                if (Request.Form["tid"] != null)
                {
                    return Request.Form["tid"].ToString();
                }
                else
                {
                    return "";
                }
            }
        }
        /// <summary>
        /// 添加至购物车
        /// </summary>
        /// <returns></returns>
        protected string addToCart()
        {
            int Count = 0;
            string message = string.Empty;
            if (Request.Form["count"] != null)
            {
                Int32.TryParse(Request.Form["count"].ToString(), out Count);
            }
            if (Count > 5 || Count < 1)
            {
                return JsonConvert.SerializeObject(new { status = 0, message = "书籍数量不对,不能超过5张哦" });
            }
            var tic = bdc.Book.SingleOrDefault(obj => obj.ID == Convert.ToInt32(tid));
            if (tic != null)
            {
                Common.Book t = new Common.Book();
                t.ID = tid;
                t.Count = Count;
                t.Name = tic.Name;
                t.Price = tic.Price;
                int result = ShoppingCartHelper.addCart(t);
                switch (result)
                {
                    case -2:
                        return JsonConvert.SerializeObject(new { status = 0, message = "同一书籍不能购买超过5本哦!" });
                    case 1:
                        return JsonConvert.SerializeObject(new { status = 1, cart = ShoppingCartHelper.getShoppingCart(), message = "成功加入购物车!" });
                    default:
                        return null;
                }
            }
            else
            {
                return JsonConvert.SerializeObject(new { status = 0, message = "不存在此书籍,请您重新选择!" });
            }
        }

        /// <summary>
        /// 获得购物车
        /// </summary>
        /// <returns></returns>
        protected string showCart()
        {
            return JsonConvert.SerializeObject(new { cart = ShoppingCartHelper.getShoppingCart() });
        }

        /// <summary>
        /// 从购物车中移除商品
        /// </summary>
        /// <returns></returns>
        protected string removeCart()
        {
            int result = ShoppingCartHelper.removeCart(tid);
            switch (result)
            {
                case -1:
                    return JsonConvert.SerializeObject(new { status = 0, message = "离开太久啦,购物车已经空空了,您重新购买吧" });
                default:
                    return JsonConvert.SerializeObject(new { status = 1, cart = ShoppingCartHelper.getShoppingCart() });
            }
        }

        /// <summary>
        /// 减少购物车中某一件商品的数量
        /// </summary>
        /// <returns></returns>
        protected string redCount()
        {
            int result = ShoppingCartHelper.reduceCart(tid);
            switch (result)
            {
                case -1:
                    return JsonConvert.SerializeObject(new { status = 0, message = "离开太久啦,购物车已经空空了,您重新购买吧" });
                default:
                    return JsonConvert.SerializeObject(new { status = 1, cart = ShoppingCartHelper.getShoppingCart() });
            }
        }

        /// <summary>
        /// 增加购物车中某一件商品的数量
        /// </summary>
        /// <returns></returns>
        protected string addCount()
        {
            int result = ShoppingCartHelper.addCart(tid);
            switch (result)
            {
                case -1:
                    return JsonConvert.SerializeObject(new { status = 0, message = "离开太久啦,购物车已经空空了,您重新购买吧" });
                default:
                    return JsonConvert.SerializeObject(new { status = 1, cart = ShoppingCartHelper.getShoppingCart() });
            }
        }
    }

后台代码

前台:

function ShowNewList(d,t) {
    var _url = "/Data_ajax/Ajax_ShoppingCart.aspx";//Data_ajax只是一个文件夹名字,随便怎么取,但是,该页面的aspx界面中,不能出现空格和内容,就是一个空的界面什么对没有
    var obj = {
        method: "addToCart",
        Id: d //在后台可以用Reques.Form["Id"]获取参数值
    };
    jQuery.ajax({
        type: "POST",
        url: _url,
        data: obj,
        dataType: "json",
        success: function (x) {
            ShowNewList1(x);
        }
    });
}

购物车类:

namespace Ipow.CMS.Helper
{
    public static class ShoppingCartHelper
    {
        /// <summary>
        /// 获取购物车
        /// </summary>
        /// <returns></returns>
        public static shoppingCart getShoppingCart()
        {
            shoppingCart cart = new shoppingCart();
            if (HttpContext.Current.Session["cart"] != null)
            {
                cart = HttpContext.Current.Session["cart"] as shoppingCart;
            }
            return cart;
        }

        /// <summary>
        /// 加入购物车
        /// </summary>
        /// <param name="tic">门票</param>
        /// <param name="CategoryID">门票类别</param>
        /// <returns></returns>
        public static int addCart(ticket tic, int CategoryID)
        {
            int result = 1;
            shoppingCart cart = getShoppingCart();
            if (cart.CategoryID == 0)
            {
                cart.CategoryID = CategoryID;
                cart.TotalPrice = tic.ticketPrice * tic.ticketCount;
                List<ticket> list = new List<ticket>();
                list.Add(tic);
                cart.tickets = list;
            }
            else
            {
                if (cart.CategoryID != CategoryID && cart.tickets.Count() != 0)
                {
                    //不同园区门票不能加入同一个购物车
                    result = -1;
                }
                else
                {
                    ticket t1 = cart.tickets.SingleOrDefault(obj => obj.ticketID == tic.ticketID);
                    //如果已存在同样的门票,则增加门票数量
                    if (t1 != null)
                    {
                        if (t1.ticketCount + tic.ticketCount <= 5)
                        {
                            t1.ticketCount += tic.ticketCount;
                            cart.TotalPrice += tic.ticketPrice * tic.ticketCount;
                            cart.CategoryID = CategoryID;
                        }
                        else
                        {
                            //门票数量超过5张
                            result = -2;
                        }
                    }
                    //不存在则添加
                    else
                    {
                        cart.TotalPrice += tic.ticketPrice * tic.ticketCount;
                        cart.CategoryID = CategoryID;
                        cart.tickets.Add(tic);
                    }
                }
            }
            HttpContext.Current.Session["cart"] = cart;
            return result;
        }

        /// <summary>
        /// 从购物车中移除商品
        /// </summary>
        /// <param name="tic">要移除的商品ID</param>
        /// <returns></returns>
        public static int removeCart(string tid)
        {
            shoppingCart cart = getShoppingCart();
            if (cart.CategoryID == 0)
            {
                //离开太久啦,购物车已经空空了,您重新购买吧
                return -1;
            }
            else
            {
                ticket t1 = cart.tickets.SingleOrDefault(obj => obj.ticketID == tid);
                if (t1 != null)
                {
                    //重新计算总价
                    cart.TotalPrice -= t1.ticketPrice * t1.ticketCount;
                    //从购物车中移除
                    cart.tickets.Remove(t1);
                }
            }
            HttpContext.Current.Session["cart"] = cart;
            return 1;
        }

        /// <summary>
        /// 减少购物车中某一商品的数量
        /// </summary>
        /// <param name="tic">要减少数量的商品id</param>
        /// <returns></returns>
        public static int reduceCart(string tid)
        {
            shoppingCart cart = getShoppingCart();
            if (cart.CategoryID == 0)
            {
                //离开太久啦,购物车已经空空了,您重新购买吧
                return -1;
            }
            else
            {
                ticket t1 = cart.tickets.SingleOrDefault(obj => obj.ticketID == tid);
                if (t1 != null)
                {
                    if (t1.ticketCount > 1)
                    {
                        //从购物车中减少某一商品的数量
                        t1.ticketCount--;
                        //重新计算总价
                        cart.TotalPrice -= t1.ticketPrice;
                    }
                }
            }
            HttpContext.Current.Session["cart"] = cart;
            return 1;
        }

        /// <summary>
        /// 增加购物车中某一商品的数量
        /// </summary>
        /// <param name="tic">要减少数量的商品id</param>
        /// <returns></returns>
        public static int addCart(string tid)
        {
            shoppingCart cart = getShoppingCart();
            if (cart.CategoryID == 0)
            {
                //离开太久啦,购物车已经空空了,您重新购买吧
                return -1;
            }
            else
            {
                ticket t1 = cart.tickets.SingleOrDefault(obj => obj.ticketID == tid);
                if (t1 != null)
                {
                    if (t1.ticketCount < 5)
                    {
                        //从购物车中减少某一商品的数量
                        t1.ticketCount++;
                        //重新计算总价
                        cart.TotalPrice += t1.ticketPrice;
                    }
                }
            }
            HttpContext.Current.Session["cart"] = cart;
            return 1;
        }
    }
    /// <summary>
    /// 购物车
    /// </summary>
    public class shoppingCart
    {
        /// <summary>
        /// 门票类别ID
        /// </summary>
        public int CategoryID { get; set; }
        /// <summary>
        /// 总价
        /// </summary>
        public decimal? TotalPrice { get; set; }
        /// <summary>
        /// 门票列表
        /// </summary>
        public List<ticket> tickets { get; set; }
    }
    /// <summary>
    /// 门票
    /// </summary>
    public class ticket
    {
        public string ticketID { get; set; }
        /// <summary>
        /// 门票名称
        /// </summary>
        public string ticketName { get; set; }
        /// <summary>
        /// 门票数量
        /// </summary>
        public int ticketCount { get; set; }
        /// <summary>
        /// 门票价格
        /// </summary>
        public decimal? ticketPrice { get; set; }
    }
}

购物车类

webform中 ajax调用后台方法(非webservice)

时间: 2024-11-05 00:53:51

webform中 ajax调用后台方法(非webservice)的相关文章

Asp.net中ajax调用后台方法

这个当然不用说大家都知道的一种就是ajax调后台的方法.1.有参数的方法调用示例代码如下:前台jQuery代码:$(function() {  这个当然不用说大家都知道的一种就是ajax调后台的方法. 1.有参数的方法调用 示例代码如下: 前台jQuery代码: $(function() {   var browers = browersEstimate();   var params = '{browersType:"' + browers + '"}';   $.ajax({   

asp.net如何在前台利用jquery Ajax调用后台方法

一 :最近因为帮同事开发项目使用到了asp.net,而我又想实现Ajax异步请求....从网上查询了一下资料之后,原来在asp.net中利用Ajax调用后台方法同样很简单,为了便于自己以后查看,特将此整理后记录如下 先贴上前台代码如下: 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="aspnetAjax.In

Web传输,前台的参数数据量过大[json格式的字符串],可能达到几M,ajax调用后台方法时

eb传输,前台的参数数据量过大[json格式的字符串],可能达到几M,ajax调用后台方法时,无法传递问题分析:tomcat上默认post提交大小为2M,左右,超过这个大小了,就会传值不成功解决方法:修改post提交大小的限制大小,在server.xml上修改,如下:<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8

Asp.net中JQuery、ajax调用后台方法总结

通过上一篇文章实例的实现,整个过程当中学习到很多知识点,了解了Jquery.Ajax在asp.net中的运用,加以总结,其实原理都是一样的,理解了一种,其他的注意很少的区别就可以了.灵活运用: 1.有参数的方法调用 示例代码如下:前台jQuery代码:$(function() {  知道的一种就是ajax调后台的方法. 1.有参数的方法调用 示例代码如下: 前台jQuery代码: [plain] view plaincopyprint? <span style="font-size:18p

jquery + ajax调用后台方法

前台js: var parameter = ""; $.ajax({ type: "POST", //提交方式 url: "Default.aspx/Search", //提交的页面/方法名 data: "{text:'" + parameter + "'}", contentType: "application/json", //返回json数据 success: function(d

前台JS(Jquery)调用后台方法 无刷新级联菜单示例

前台用AJAX直接调用后台方法,老有人发帖提问,没事做个示例 下面是做的一个前台用JQUERY,AJAX调用后台方法做的无刷新级联菜单 http://www.dtan.so CasMenu.aspx页面: [html] view plaincopyprint? <%@ Page Language="C#" AutoEventWireup="true" CodeFile="CasMenu.aspx.cs" Inherits="_De

MVC4中AJAX Html页面打开调用后台方法实现动态载入数据库中的数据

之前一直用window.onload方法来调用js方法来实现,今天纠结能不能换个方法实现. 非常明显是能够的. 在html前台页面引用js代码例如以下 @Scripts.Render("~/Scripts/User/AddUser.js") 这就算引用了.看adduser.js代码假设调用后台方法 $(document).ready( function (){ $.ajax({ type: 'POST', url: "/EditUserPassWord/UserGroupQu

MVC4中AJAX Html页面打开调用后台方法实现动态加载数据库中的数据

之前一直用window.onload方法来调用js方法来实现,今天纠结能不能换个方法实现. 很明显是可以的. 在html前台页面引用js代码如下 @Scripts.Render("~/Scripts/User/AddUser.js") 这就算引用了,看adduser.js代码如果调用后台方法 $(document).ready( function (){ $.ajax({ type: 'POST', url: "/EditUserPassWord/UserGroupQuery

ASP.NET中JQuery+AJAX调用后台

做订餐系统手机端时,遇到一个问题,实现登录功能时,我要调用后台的方法进行验证和判断.我们应用的是webForm进行开发的,正常情况下只要绑定按钮的方法,前后台对应就可以实现.但是,手机端应用MUI样式之后,就不适用于这种情况了.基于这个问题,我们使用JQuery+Ajax技术,其实MUI中也自带ajax技术. 实现过程: webForm代码: function login() { var name = document.getElementById("username").value;