xiaochao

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  1 随笔 :: 6 文章 :: 48 评论 :: 0 Trackbacks

当我们在使用ajax时通常会遇到使用history.back()或history.go(-1)的情况,这样在返回ajax页面时通常会时ajax的数据丢失(不是你最后一次选择的ajax数据);这种情况下我们需要保存ajax的参让其能在history.back()中起到作用;昨天晚上试了很多方法都不行;这个时候我们就需要利用history.back()返回的是上一个链接的特点通过window.location.hash来存在ajax所用到的值,下面是代码试例:

function getSetMeal(obj)
{

 window.location.hash 
= obj.value;
 
var param = "test="+obj.value;
 
new Ajax("test.do",{method:'post',onComplete:setMainSuit}).request(param);
  
}


在页面时调用时

<script>
     
var first = "$!{first}"||-1;
     
var hash=window.location.hash;
     
if(hash!="")
     {
      
//这里的参数解析你可以用自己的方法实现;
        var str = hash.replace('#','');
        
var obj=new Object();
        obj.value
=str;
        getSetMeal(obj);
     }
     
else if(first!=-1)
     {
       
var obj=new Object();
        obj.value
=first;
        getSetMeal(obj);
     }
</script>


下面在介绍一种情况的解决办法,当你的ajax页面还有返回上一个页面时,如果你使用了hash存值的做法那么在使用history.go(-n)时是不好控制的,这时我们需要使用history.go(string)的方法准确的说是history.go(url)说明上是返回最近的链接包含的串,不过我使用串没有起作用只有使用url;代码如下:

 1 function back()
 2  {
 3    var domain=window.location.host;
 4    var protocol=window.location.protocol;
 5    //这个url是通过request.getHeader("Referer");来获取的
 6    var url = "$!{url}"||"-1";
 7    //这样是返回固定的这样不好
 8    //history.go(protocol+"//"+domain+"/test1.do");
 9    history.go(url);
10 
11  }
12 
posted on 2008-06-03 10:09 小超 阅读(2148) 评论(1)  编辑  收藏 所属分类: JAVASCRIPT

评论

# re: 当AJAX遇上History[未登录] 2015-09-10 11:00 123
撒旦法撒旦法水电费水电费阿萨  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: