当我们在使用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