求救!!!java ajax实现无刷新的时候,方法调试有时会进入方法有时不会进入,如果没进入调试方法的话有返回结果,可是如果手动刷新的时候页面又变回原来的值,如果调试有进入方法就正常了,这是为什么?这是javascript代码:
function createXmlHttpRequest(){
if(window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XmlHttpRequest){
return new XmlHttpRequest();
}
}
var xmlHttpRequest;
var goodsId;
var formerNumber; //改变数量之前的商品数量
var curNum; //改变数量之后的商品数量
var price;
function changeNum(id,pric){
goodsId = id;
price = pric;
formerNumber = document.getElementById("hidNum"+goodsId).value;
curNum = document.getElementById("num"+goodsId).value;
if(isNaN(curNum)){
document.getElementById("num"+goodsId).value = formerNumber;
}
else{
var url="online!updateBuyNumber.action?goodsId="+goodsId+"&num="+curNum;
xmlHttpRequest = createXmlHttpRequest();
xmlHttpRequest.onreadystatechange = showResult;
xmlHttpRequest.open("GET",url,true);
xmlHttpRequest.send(null);
}
}
//进行返回结果处理
function showResult(change){
if(xmlHttpRequest.readyState==4 && xmlHttpRequest.status==200){
var result = xmlHttpRequest.responseText;
var splitValues = result.split(",");
document.getElementById("exChangeTd"+goodsId).innerText=splitValues[0];
document.getElementById("hidNum"+goodsId).value = curNum;
document.getElementById("amountMoney").innerText= parseInt(document.getElementById("amountMoney").innerText)+(curNum-formerNumber)*price;
}
}
这是action类中的方法:
public String updateBuyNumber() {
HttpServletRequest request = ServletActionContext.getRequest();
int goodsId = Integer.parseInt(request.getParameter("goodsId"));
int num = Integer.parseInt(request.getParameter("num"));
shoppingCar = (ShoppingCar) ActionContext.getContext().getSession()
.get("shoppingCar");
BuyGoods bg = shoppingCar.getCarMap().get(goodsId);
if (bg != null) {
bg.setNumber(num);
shoppingCar.getCarMap().put(goodsId, bg);
ActionContext.getContext().getSession().put("shoppingCar",
shoppingCar);
try {
PrintWriter out = ServletActionContext.getResponse().getWriter();
out.print(bg.getGoods().getExChangeScore()*num+","+bg.getGoods().getScore()*num);
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
function createXmlHttpRequest(){
if(window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XmlHttpRequest){
return new XmlHttpRequest();
}
}
var xmlHttpRequest;
var goodsId;
var formerNumber; //改变数量之前的商品数量
var curNum; //改变数量之后的商品数量
var price;
function changeNum(id,pric){
goodsId = id;
price = pric;
formerNumber = document.getElementById("hidNum"+goodsId).value;
curNum = document.getElementById("num"+goodsId).value;
if(isNaN(curNum)){
document.getElementById("num"+goodsId).value = formerNumber;
}
else{
var url="online!updateBuyNumber.action?goodsId="+goodsId+"&num="+curNum;
xmlHttpRequest = createXmlHttpRequest();
xmlHttpRequest.onreadystatechange = showResult;
xmlHttpRequest.open("GET",url,true);
xmlHttpRequest.send(null);
}
}
//进行返回结果处理
function showResult(change){
if(xmlHttpRequest.readyState==4 && xmlHttpRequest.status==200){
var result = xmlHttpRequest.responseText;
var splitValues = result.split(",");
document.getElementById("exChangeTd"+goodsId).innerText=splitValues[0];
document.getElementById("hidNum"+goodsId).value = curNum;
document.getElementById("amountMoney").innerText= parseInt(document.getElementById("amountMoney").innerText)+(curNum-formerNumber)*price;
}
}
这是action类中的方法:
public String updateBuyNumber() {
HttpServletRequest request = ServletActionContext.getRequest();
int goodsId = Integer.parseInt(request.getParameter("goodsId"));
int num = Integer.parseInt(request.getParameter("num"));
shoppingCar = (ShoppingCar) ActionContext.getContext().getSession()
.get("shoppingCar");
BuyGoods bg = shoppingCar.getCarMap().get(goodsId);
if (bg != null) {
bg.setNumber(num);
shoppingCar.getCarMap().put(goodsId, bg);
ActionContext.getContext().getSession().put("shoppingCar",
shoppingCar);
try {
PrintWriter out = ServletActionContext.getResponse().getWriter();
out.print(bg.getGoods().getExChangeScore()*num+","+bg.getGoods().getScore()*num);
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
解决方案 »
- 关于查询的效率问题
- faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException得错误
- 现在struts2出来了,到底直接用webwork2还是用struts2好呢?
- 为啥firefox,opera浏览器不支持microsoft的java虚拟机呀?
- Hibernate进行多个条件查询有没有好的办法
- 求助win7 64位安装Tortoisesvn报错 explore直接崩溃 无限重启 装32的右键菜单又不显示
- 关于jsp网页实现打印的问题
- 大家说说Hibernate持久化对象的优势!
- 关于DynaActionForm的问题
- 大家进来聊聊吧!!!
- MyEclipse8.5插件安装。。
- hql语句实现两个表的连接查询
比如 "op="+new Date()
防止缓存的
这个问题主要处理浏览器缓存!不管什么框架都是调用最基本的东西~!
建议楼主用Jquery!!!