Ajax修改购物车示例


1.购物车类的设计

ShoppingCartItem:书的封装,包括书名,数量,价格三个属性,以及对应的getter和setter方法。

ShoppingCart:购物车封装类,items为 Map<String, ShoppingCartItem> ,以及加入购物车,得到购物车中书的总数量以及总价格三个函数。

2:jsp加入购物车,超链接中带入书名以及价格

<body> 
<!-- 加入span的目的是为了定位 --> 
<div id="cartstatus"> 
您已经将 
<span id="bookName"></span>加入到购物车中,购物车中有 
<span id="totalBookNumber"></span>本书,总价格是 
<span id="totalMoney"></span> 
</div> 
<br> 
<br> 
java 
<a 
href="${pageContext.request.contextPath}/addToCart?id=java&price=100">加入购物车</a> 
<br> 
ajax 
<a 
href="${pageContext.request.contextPath}/addToCart?id=ajax&price=200">加入购物车</a> 
<br> 
jquery 
<a 
href="${pageContext.request.contextPath}/addToCart?id=jquery&price=300">加入购物车</a> 
<br> 
</body>
<!--${pageContext.request.contextPath}获取该项目的绝对路径 -->

3:addToCart -----servlet的设计

步骤如下:

1) :获取请求参数 id(bookName),price,是从jsp页面中的超链接来获取的

2):在session中获取购物车对象,如果session属性中没有购物车,则新建一个购物车对象放置在session属性中

3) : 加入购物车操作Shopping.addToCart(bookName, price);

4):想ajax传递Json对象,该对象包括 :{""bookName"":"totalBookNumber","totalMoney" },若从服务器端返回json对象,则属性名必须使用双引号!!

5):响应json请求,response.getWriter().print(json);

public class AddToCartServlet extends HttpServlet { 

public void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 
this.doPost(request, response); 
} 

public void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 
//1:获取请求参数 id(bookName),price 
String bookName =request.getParameter("id"); 
int price =Integer.parseInt(request.getParameter("price")); 
//2:获取购物车对象,在session中 
ShoppingCart sc=(ShoppingCart) request.getSession().getAttribute("sc"); 
if(sc==null){ 
sc=new ShoppingCart(); 
request.getSession().setAttribute("sc",sc); 
} 

//3;将点击的对象加入到购物车中 
sc.addToCart(bookName, price); 
//4:准备响应的Json对象:{""bookName"":"totalBookNumber","totalMoney" } 
//若从服务器端返回json对象,则属性名必须使用双引号!! 
StringBuilder sBuilder=new StringBuilder(); 
sBuilder.append("{") 
.append("\"bookName\":\""+bookName+"\"") 
.append(",") 
.append("\"totalBookNumber\":\""+sc.getTotalBookNumber()+"\"") 
.append(",") 
.append("\"totalMoney\":\""+sc.getTotalMoney()+"\"") 
.append("}"); 

//响应json请求 
response.setContentType("text/javascript"); 
response.getWriter().print(sBuilder.toString()); 
} 

}
上述中的用StringBuilder来拼接JSON字符串的方式可以借助第三方开源Jackson来简化实现:
String jsonStr=null; 
ObjectMapper objectMapper=new ObjectMapper(); 
jsonStr=objectMapper.writeValueAsString(sc);

4:ajax接受从服务器传来的参数{""bookName"":"totalBookNumber","totalMoney" }

步骤:

1):为加入购物车这个超链接增加单击响应函数,并取消默认行为(return false)

2):通过 HTTP GET 请求载入 JSON 数据。$.getJSON(url, [data], [callback])

准备url.agrs,并在回调函数内部将购物车中的内容显示在Jsp页面中。

3):通过jquery中的hide(),show()方法,判断是不是第一使用购物车,如果是第一次使用,则jsp页面不显示购物车。

<head> 
<!--${pageContext.request.contextPath}获取该项目的绝对路径 --> 
<script type="text/javascript" 
src="${pageContext.request.contextPath}/scripts/jquery-1.7.2.js"></script> 
<script type="text/javascript"> 
$(function(){ 
var isHasCart="${sessionScope.sc==null}"; 
if(isHasCart=="true"){ 
$("#cartstatus").hide();//隐藏显示的元素 
}else{ 
$("#cartstatus").show(); //显示隐藏的匹配元素 
$("#bookName").text("${sessionScope.sc.bookName}"); 
$("#totalBookNumber").text("${sessionScope.sc.totalBookNumber}"); 
$("#totalMoney").text("${sessionScope.sc.totalMoney}"); 
} 

$("a").click(function(){ 
$("#cartstatus").show(); 
var url=this.href; //url属性 
var agrs={"time":new Date()}; //时间戳 
$.getJSON(url,agrs,function(data){ 
$("#bookName").text(data.bookName); 
$("#totalBookNumber").text(data.totalBookNumber); 
$("#totalMoney").text(data.totalMoney); 
}); 
return false; 
}); 
}); 


</script> 
</head>



相关阅读:
Win8.1系统关机命令变成重启问题解决方法
CentOS 6误删除的boot分区该如何还原恢复
Win10开机声音没有了怎么办?Win10开机声音设置方法图文详解
C#中的is和as操作符区别小结
C#实现客户端弹出消息框封装类实例
JavaScript 32位整型无符号操作示例
CSS行内元素和块级元素的居中实例分析
JavaScript使ifram跨域相互访问及与PHP通信的实例
浅析Android 手机卫士设备管理权限锁屏
在Linux系统中限制CPU占用率的教程
Android判断是否为飞行模式简单方法
浅析java 的 static 关键字用法
JavaScript sub方法入门实例(把字符串显示为下标)
JSP+jquery使用ajax方式调用json的实现方法
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 太原-长治北 定远-徐州东 大民屯-辽阳 蔡家坡-北京西 萍乡-大虎山 菏泽-莆田 武威-乌海 带岭-迁安 二连-苏尼特左旗 集安-果松 安家-背荫河 普兰店-大安北 山丹-酒泉 驻马店-南昌 温都和硕-林西 金华南-鳌江 乐清-丹阳 襄阳-郓城 九龙塘-娄山关 北京西-长汀南 滦平-白城 葫芦岛北-铁岭西 嘉兴-江山 太谷西-北京西 韶关东-怀化 昆都庙-扎鲁特 革居-长坡岭 合肥-枣庄 瓦屋山-义乌 碑木镇-双凤驿 长沙南-昆明南 三源浦-抚顺北 潍坊-安陆 虢镇-武昌 埃岱-下普雄 富锦-兰棱 商丘-泾县 娄底-北戴河 丽水-民权北 翠岗-拉哈 汕尾-广州南 三门峡南-保定东 枣庄西-诸城 熊岳城-镇赉 大雁-太平川 锦州南-海林 滦县-阿城 峡江-衡水 大虎山-平顶山西 小岭-哈尔滨 古家沱-油溪 齐齐哈尔-隆化 扎兰屯-海拉尔 瑞安-南京 柳园-广安 北戴河-缙云 藁城-赣州 佛山-酉阳 瑞昌-青田 红果-小哨 哈尔滨-莲江口 海宁-宜昌东 株洲-兰州 戚墅堰-苏州园区 本溪-天桥 南平南-阳平关 鹿寨北-南宁东 吕梁-哈密 金昌-巢湖 林盛堡-灵山 全椒-襄阳 武山-南宁 霸州西-邯郸 滨海-台安 邯郸-祁阳 济南-渠县 龙华-晋州 黄州-衡阳 武夷山东-潮汕 开封北-永城北 南京到南阳唐河坐长途客车汽车都经过哪里,路过泌阳县吗,谁有车
杭州客车汽车北站到山西长治的长途客车汽车大概要多少时间呢
哪位大虾有4月18日列车火车提速后芜湖至巢湖的列车时刻表
我今年到沈阳药科大上学,鹤壁的,请问怎么坐火车列车到达
天义到赤峰长途班车时刻表
谁能告诉我从北京列车站怎样去黄埔大学,是大兴区榆垡镇的黄
华宇物流浙江嘉兴到河北廊坊几天能到?
请问一下,谁能告诉我从苏州到镇江的列车火车票一般多少钱
泰安樱桃园现在还开放吗,是不是已经过季了啊?
从嘉兴汽车客车北站到杭州香格里拉饭店怎么走
T26青岛到北京的火车列车靠近车窗的位置
芜湖到南江哪里坐车
五一杭州至江西火车列车票价
从朝阳的火车列车站下车怎样到达朝阳师范高等专科学校
莱西汽车站怎么去莱西威海东路东首旧桥南2号的华美园林公司
谁能告诉我从哈尔滨列车火车站我想去南岗区中山路那家金汉斯我应
驾驶证转档案是转到市里还是县里?我应该去市车管所还是县车管
从广东惠州到湖北枣阳应该走哪条高速
湖南那个地方有云霄飞车和70米的蹦极台是在一个什么乐园,
翻译 栈桥部分导游词
2011年暑期南宁 哪里有招 有关客车汽车方面的实习生吗?
请问镇江火车列车站距离大港镇,辛丰镇,丹阳的后巷镇哪个更
郑州去威海坐客车汽车要多久
大连火车列车站胜利地下的“屈臣氏”里卖的蓝色的巧克力叫什么名
KA02600295312为单号的快包哪里了,从天津大港区寄到廊坊,已
T211次火车列车,12号车厢15号座,请问是在什么位置,是否靠窗,
从上海长宁区定西路1555号到城隍庙怎么坐车啊
从沙河立交怎样拐到广深高速,然后到东莞大朗
我浙江温州人,承德C1驾照想转到杭州来。听说还要到富阳重新路
宁波到包头车票有没有有票价多少钱什么时间的

Copyright © 2016 phpStudy |