beego购物车ajax异步刷新

数据库中添加购物车数据的时候,页面只是进行局部刷新。局部刷新我们一般用ajax来实现这个功能,那这里我们就用ajax发送请求。

请求

添加购物车,需要传递数据,我们一般是用post请求,函数名是$.post(),有三个参数,第一个参数是请求路径,第二个参数是传递的数据(json格式的数据),第三个参数是成功后所执行的函数

所以在发送请求之前,我们需要先确定请求路径,添加购物车数据需要登陆的状态下才能进行,所以我们设置请求路径为/user/addCart。

接着我们要去构造传递的数据,添加购物车,需要把商品id和对应的数量传递给后台,这里我们设计数据格式为{“skuid”:id,“count”:count}。

最后是我们的函数。代码如下:

  • 封装要传递的数据
    我们要传递的数据为商品的id,所以我们需要获取这个id,但是这时候你发现,我们页面里面没有显示商品id的地方。那这里需要我们手动在页面里面添加这个内容,有两种解决方法:
    第一种:隐藏域传值,这个方法我们前面用过,不做详细介绍。
    第二种:给某一个标签添加一个自定义属性,获取这个属性的值,这里我们给加入购物车按钮添加一个商品ID属性,代码如下:
    • 获取自定义属性的值,使用attr()方法。具体代码如下:
      skuid = $(’#add_cart’).attr(“skuid”) #原有属性prop 自定义属性 attr
      获取商品数量,直接获取相应标签值即可,代码如下:
      count = $(’.num_show’).val()
      封装成一个json格式的数据包,代码如下:
      params = {‘skuid’:skuid,‘goodsCount’:count}
  • 发送请求
    $.post(’/user/addCart’,params,function (data) {})

路由

ajax发送了请求之后,我们要在router.go中添加相对应的控制器和方法。

 beego.Router("/user/addCart",&controllers.CartController{},"post:HandleAddCart")

控制器

在路由指定了控制器和方法之后,我们就创建控制器并且实现HandleAddCart方法。

  • 获取数据
    skuid,err1 := this.GetInt(“skuid”)
    count,err2 := this.GetInt(“goodsCount”)

  • 校验数据
    校验数据传输是否正确
    //返回数据
    resp := make(map[string]interface{})
    defer this.ServeJSON()

    //数据校验
    if err1 != nil || err2 != nil{
    	resp["res"]=1
    	resp["errmsg"] = "获取数据信息错误"
    	this.Data["json"] = resp
    	return
    }
    

    注意,ajax传递过来的数据,我们回复的时候不再指定视图,而是回复给视图json格式的数据。那这里我们怎么给视图中传递json数据呢?
    首先定义一个map[string]interface类型,用来存储返回的数据,然后指定传递的数据代码为:
    this.Data[“json”] = resp
    接着调用传递数据函数:
    this.ServeJSON()
    不管能不能执行成功我们都要给ajax请求返回数据,所以这里我们可以直接defer调用函数的代码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解决这个问题。首先,我们需要了解购物案例的基本流程,然后再进行Ajax改造。 购物案例基本流程: 1. 用户点击商品的“加入购物”按钮。 2. 系统将商品信息添加到购物中。 3. 系统显示购物中的商品列表和总价。 4. 用户可以继续添加商品或者结算购物Ajax改造步骤: 1. 在“加入购物”按钮的点击事件中,使用Ajax向后台发送请求,将商品信息添加到购物中。 2. 在后台处理完请求后,返回购物中的商品列表和总价,然后将这些数据返回给前端。 3. 前端收到后台返回的数据后,使用JavaScript动态更新购物列表和总价,实现无刷新操作。 4. 用户可以继续添加商品或者结算购物,这些操作也都可以通过Ajax实现。 下面是一个简单的Ajax购物示例代码: 前端代码: ```html <!-- 显示商品列表 --> <div id="goods-list"></div> <!-- 显示购物列表 --> <div id="cart-list"></div> <!-- 显示总价 --> <div id="total-price"></div> <!-- 加入购物按钮 --> <button class="add-to-cart" data-goods-id="1">加入购物</button> <script> $(function() { // 加入购物按钮点击事件 $('.add-to-cart').click(function() { var goodsId = $(this).data('goods-id'); $.ajax({ url: '/cart/add', type: 'POST', dataType: 'json', data: {goodsId: goodsId}, success: function(data) { // 更新购物列表和总价 $('#cart-list').html(data.cartListHtml); $('#total-price').text(data.totalPrice); } }); }); }); </script> ``` 后台代码: ```php <?php // 处理加入购物请求 function addCartAction() { $goodsId = $_POST['goodsId']; // 将商品添加到购物中 $cart->addGoods($goodsId); // 获取购物列表和总价 $cartListHtml = $cart->getCartListHtml(); $totalPrice = $cart->getTotalPrice(); // 返回JSON格式数据 $result = array('cartListHtml' => $cartListHtml, 'totalPrice' => $totalPrice); echo json_encode($result); } ?> ``` 在这个示例中,我们使用了jQuery的Ajax方法进行请求发送和数据处理。后台代码使用了PHP语言实现,但是你也可以使用其他语言实现,例如Java、Python等等。总之,通过Ajax技术,我们可以实现无刷新操作,提升用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值