求救!!!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;
}

解决方案 »

  1.   

    说不上来,他本来就不是很稳定。我遇到类似的问题了。建议你用dwr框架吧。
      

  2.   

    url 后面最好加一个!  参数!
    比如 "op="+new Date()
    防止缓存的
      

  3.   

    这不是稳定不稳定的问题!dwr用起来很麻烦!
    这个问题主要处理浏览器缓存!不管什么框架都是调用最基本的东西~!
    建议楼主用Jquery!!!
      

  4.   

    同意楼上,Jquery是很好的东西啊。
      

  5.   

    缓存的问题 url是是一样的 在后面加个当前