【转载】https://blog.csdn.net/luliuying_01/article/details/78177617?locationNum=8&fps=1

由于在做答辩项目,做到购物车订单就自己研究了一下ajax进行页面异步更新,简单的写如下,等更加深入了解再进行更新

jsp界面

<div id="content">
 <table width="100%" border="0" cellspacing="0" cellpadding="0" id="shopping">
 <form action="" method="post" name="myform">
  <tr>
    <td class="title_1"><input id="allCheckBox" type="checkbox" value="" onclick="selectAll()" />全选</td>
    <td class="title_2" colspan="2">店铺宝贝</td>
     <td class="title_3">获积分</td>
    <td class="title_4">单价(元)</td>
    <td class="title_5">数量</td>
    <td class="title_6">小计(元)</td>
    <td class="title_7">操作</td>
  </tr>
  <tr>
    <td colspan="8" class="line"></td>
  </tr>
  <c:forEach items="${list}" var="oc">
  <tr>
    <td colspan="8" class="shopInfo">
        <a href="#">${oc.order.oid}</a>    卖家:<a href="#">${oc.order.userid.userid}</a> <img src="cart/images/taobao_relation.jpg" alt="relation" />
   </td>
  </tr>
   <tr id="product1">
    <td class="cart_td_1">
         <input type="hidden" value="${oc.orecorderid}">
         <input name="cartCheckBox" type="checkbox" value="product1" onclick="selectSingle()" />
    </td>
    <td class="cart_td_2"><img src="upload/${oc.goods.picture}" width="100px" height=60px alt="shopping"/></td>
    <td class="cart_td_3"><a href="#">${oc.goods.gname}</a><br />
      <br />
      
    <td class="cart_td_4">5</td>
    <td class="cart_td_5">${oc.goods.gprice}</td>
    <td class="cart_td_6">
    <input type="hidden" value="${oc.rnumber}">
    <img src="cart/images/taobao_minus.jpg" alt="minus"  onclick="changeMinusNum(this)"  id="minus"/> 
    <input id="num_1" type="text"  value="${oc.rnumber}" class="num_input" readonly="readonly"/> 
    <img src="cart/images/taobao_adding.jpg" alt="add" onclick="changeAddNum(this)"  id="add"/></td>
    <td class="cart_td_7"></td>
    <td class="cart_td_8"><a href="javascript:;" onclick="deleteRow(this)">删除</a></td>
  </tr>
  
  </c:forEach>
  
   <tr>
   <td  colspan="3"><a href="javascript:" onclick="deleteSelectRow()"><img src="cart/images/taobao_del.jpg" alt="delete"/></a></td>
    <td colspan="5" class="shopend">商品总价(不含运费):<label id="total" class="yellow"></label> 元<br />
    可获积分 <label class="yellow" id="integral"></label> 点<br />
    <input name=" " type="image" src="cart/images/taobao_subtn.jpg" /></td>
  </tr>
  </form>
</table>
<div style="text-align:center;">

</div>
</div>

</body>
</html>

is界面

// JavaScript Document

/*增加所购商品的数量*/
function changeAddNum(add) {
    var rnumber = $(add).prev().val();
    rnumber++;
    var orecorderid = $(add).parent().siblings(":eq(0)").children(":eq(0)").val();
    $.ajax({
        url : "OrderrecordServlet",
        data : {
            methods :"addNum",orecorderid:orecorderid,rnumber:rnumber,
        },
        success : function(result) {
            if (result) {
                $(add).prev().val(rnumber);
                var preprice = parseInt($(add).parent().prev().html());
                $(add).parent().next().html(preprice*rnumber); 
                $("#total").html(parseInt($("#total").html())+preprice);
            }
        }
    });
}

/**
 * 减少所购买商品的数量
 */
function changeMinusNum(minus)
{
    var minusNum = $(minus).next().val();
    if(minusNum>1){
        minusNum--;
        var orecorderid = $(minus).parent().siblings(":eq(0)").children(":eq(0)").val();
        console.log(orecorderid);
        $.ajax({
            url:"OrderrecordServlet",
            data:{methods :"minusNum",orecorderid:orecorderid,minusNum:minusNum},
            success:function(result){
                if(result){
                    $(minus).next().val(minusNum);
                    var preprice = parseInt($(minus).parent().prev().html());
                    $(minus).parent().next().html(preprice*minusNum);
                    $("#total").html(parseInt($("#total").html())-preprice);
                }
            }
        });
    }
}

/*
 * function changeNum(numId,flag){numId表示对应商品数量的文本框ID,flag表示是增加还是减少商品数量 var
 * numId=document.getElementById(numId); if(flag=="minus"){减少商品数量 if(numId.value<=1){
 * alert("宝贝数量必须是大于0"); return false; } else{
 * numId.value=parseInt(numId.value)-1; productCount(); } } else{flag为add,增加商品数量
 * numId.value=parseInt(numId.value)+1; productCount(); } }
 */

/* 自动计算商品的总金额、总共节省的金额和积分 */
function productCount() {
    var total = 0; // 商品金额总计
    var integral = 0; // 可获商品积分

var point; // 每一行商品的单品积分
    var price; // 每一行商品的单价
    var number; // 每一行商品的数量
    var subtotal; // 每一行商品的小计

/* 访问ID为shopping表格中所有的行数 */
    var myTableTr = document.getElementById("shopping").getElementsByTagName(
            "tr");
    if (myTableTr.length > 0) {
        for (var i = 1; i < myTableTr.length; i++) {/* 从1开始,第一行的标题不计算 */
            if (myTableTr[i].getElementsByTagName("td").length > 2) { // 最后一行不计算
                point = myTableTr[i].getElementsByTagName("td")[3].innerHTML;
                price = myTableTr[i].getElementsByTagName("td")[4].innerHTML;
                number = myTableTr[i].getElementsByTagName("td")[5]
                        .getElementsByTagName("input")[0].value;
                integral += point * number;
                total += price * number;
                myTableTr[i].getElementsByTagName("td")[6].innerHTML = price
                        * number;
            }
        }
        document.getElementById("total").innerHTML = total.toFixed(2);
        document.getElementById("integral").innerHTML = integral;

}
}
window.onload = productCount;

/* 复选框全选或全不选效果 */
function selectAll() {
    var oInput = document.getElementsByName("cartCheckBox");
    for (var i = 0; i < oInput.length; i++) {
        oInput[i].checked = document.getElementById("allCheckBox").checked;
    }
}

/* 根据单个复选框的选择情况确定全选复选框是否被选中 */
function selectSingle() {
    var k = 0;
    var oInput = document.getElementsByName("cartCheckBox");
    for (var i = 0; i < oInput.length; i++) {
        if (oInput[i].checked == false) {
            k = 1;
            break;
        }
    }
    if (k == 0) {
        document.getElementById("allCheckBox").checked = true;
    } else {
        document.getElementById("allCheckBox").checked = false;
    }
}

/* 删除单行商品 */
function deleteRow(rowId) {
    var orecorderid = $(rowId).parent().siblings(":eq(0)").children(":eq(0)")
            .val();
    $.ajax({
        url : "OrderrecordServlet",
        data : {
            methods : "delrow",
            orecorderid : orecorderid
        },
        success : function(result) {
            if (result) {
                $(rowId).parent().parent().prev().remove();
                $(rowId).parent().parent().remove();
                $("#total").html((parseInt($("#total").html())-parseInt($(rowId).parent().prev().html())).toFixed(2));
            }
        }
    });

}

ajax 实现订单商品数量的增减及订单的删除进行异步更新界面的更多相关文章

  1. 第八十四篇:Vue购物车(五) 商品数量的增减

    好家伙, 1.商品数量的增减 我们把商品的数量增减独立出来,写成一个独立的组件Counter <template> <div class="number-container ...

  2. 根据查询出各地订单商品数量 group by

    order订单表,orderprduct订单商品表,area地区表 SELECT (a1.Name+a2.Name+a3.Name) AS areanaem,orderArea.AreaId,orde ...

  3. 127_Power Pivot&Power BI DAX计算订单商品在库时间(延伸订单仓储费用)

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 前面已经写过一个先进先出的库龄案例,在业务发生又有这样一个需求:先进先出前提,需要按照订单计算每个商品在库时间, ...

  4. 【SSH网上商城项目实战28】使用Ajax技术局部更新商品数量和总价

         转自: https://blog.csdn.net/eson_15/article/details/51487323 昨天把项目部署了一下,玩了玩,今天完善了一下购物车中修改商品数量就能局部 ...

  5. 22Mybatis_订单商品数据模型_多对多查询以及对多对多查询的总结

    之前讲了一对一,一对多查询,这篇文章讲的是多对多. 先给出需求:查询用户及用户购买商品信息. 我们由之前的文章知道,这个需求是多对多的. 还是那个终止我们的mybatis所做的不管是之前的一对一还是一 ...

  6. ecshop 属性表(attribute)商品属性表(goods_attr)货品表(prduct) 商品数量的联系

    ecshop 属性表(attribute)商品属性表(goods_attr)货品表(prduct) 商品数量的联系 一个商城的商品属性存放在属性表(attribute)里 ,每个商品对应的属性在goo ...

  7. 利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变

    查看本章节 查看作业目录 需求说明: 利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变 当用户单击"+" ...

  8. 21Mybatis_订单商品数据模型_一对多查询——resultMap方式

    这篇文章延续订单商品数据模型,这张讲述的是一对多的查询.(用resultMap) 给出几张表的内容: User表:

  9. 19Mybatis_订单商品数据模型分析

    这篇文章是对订单商品数据模型进行分析(会给出分析思路),有四张表.这篇文章是后续文章的基础,因为后续的文章要针对这个数据模型(四张表)进行一对一,一对多,多对多进行查询. 我们以后会碰到各种各样的数据 ...

随机推荐

  1. 51nod 1267【二分】

    思路: 首先我们能够很容易地想到,4个数的和,拆成两两相加:a+b=-c-d; 我们也能很轻松地求出两两之和,但是呢..不同的和会存在相同的值相加,所以还要排除这个条件.具体操作就是标记一下,然后将和 ...

  2. poj 1182 食物链【带权并查集】

    设相等的边权为0,吃的边权为,被吃的边权为2,然后用带权并查集在%3的意义下做加法即可 关系为简单环的基本都可以用模环长的方式是用带权并查集 #include<iostream> #inc ...

  3. CF580D Kefa and Dishes 【状压dp】By cellur925

    题目传送门 友情链接:new2zydalao%%%  一篇优秀的状压文章 题目大意:$n$个菜有$k$个规则,如果kefa在吃完第$xi$个菜之后吃了第$yi$个菜(保证$xi$.$yi$不相等), ...

  4. java自带线程池

    1. newSingleThreadExecutor 创建一个单线程的线程池.这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务.如果这个唯一的线程因为异常结束,那么会有一个新的线程来替 ...

  5. [已读]编写高质量代码 改善JavaScript程序的188个建议

    吐槽一万遍,买的最后悔的一本,没有之一,大量篇幅抄袭<高性能javascript>,我记得还有部分抄袭<javascript精粹>,<javascript模式>有没 ...

  6. Camera和 tris,verts的优化

    Unity的Camera组件有很多可调节的参数,当需要做优化的时候,stats面板中的tris和verts这两个重点项都与Camera组件的参数有很大关系,有些参数的意义Unity手册说得不够详细,经 ...

  7. 基于webmagic的爬虫小应用

    以前没有写过爬虫程序,最近两天就研究了一下java的爬虫框架webmagic.然后写了一个demo 写爬虫的基本思想: 1.抓取目标连接 2.根据页面中标签,抓捕你需要的内容 3.保存结果集 以下是实 ...

  8. AndroidStudio碰到的各种问题

    源码已经下载了,但是为毛关联不了? 我的源码默认是下载在Sdk\sources\android-23\目录下面的,以前开发的时候都是自动关联的,今天碰到了怎么刷新,怎么关联都不行. 解决方式为: 1. ...

  9. canvas基础绘制-一个小球的坠落、反弹

    效果如图: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  10. 必看的dockerfile禁忌与建议!

    直接上对照组(看第三个run) test1 FROM centos MAINTAINER ** ​ RUN yum -y update RUN yum -y install wget ​ RUN wg ...