小程序返回上一頁(yè)面自動(dòng)刷新
Java編寫(xiě)WEB程序時(shí),頁(yè)面應(yīng)該只是表示的部分,不應(yīng)該含有任何Java腳本代碼,所以主要考慮使用JS來(lái)實(shí)現(xiàn)這一功能。我們經(jīng)常會(huì)碰到返回上一頁(yè),但是需要刷新頁(yè)面上與狀態(tài)相關(guān)的信息,從而避免重復(fù)操作,錯(cuò)誤信息的弊端。先說(shuō)兩種方法:
設(shè)置頁(yè)面為不緩存,訪問(wèn)上一次頁(yè)面就需要重新去服務(wù)器獲取。
HTML
<pre>
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="0">
</pre>
JAVA
if (request.getProtocol().compareTo("HTTP/1.0") == 0){
response.setHeader("Pragma","no-cache");
}else if (request.getProtocol().compareTo("HTTP/1.1") == 0){
response.setHeader("Cache-Control","no-cache");
}
php
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
ASP
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "No-Cache"
2. 頁(yè)面自動(dòng)重載,在頁(yè)面第一次運(yùn)行時(shí)執(zhí)行一次重載。
此方法稍微有點(diǎn)復(fù)雜,HTTP是沒(méi)有狀態(tài)的,請(qǐng)求一次頁(yè)面后下次請(qǐng)求沒(méi)有什么必然的關(guān)系,當(dāng)然用Seesion可以,這樣子給服務(wù)器很大的壓力,還有一種獲取狀態(tài)的方法就是Cookie。在第一次打開(kāi)一個(gè)頁(yè)面時(shí),讓Cookie存一個(gè)值表示這是第一次,然后重載頁(yè)面后,檢測(cè)Cookie值是否是第一次,若是則置為非第一次狀態(tài)。一個(gè)簡(jiǎn)單的實(shí)現(xiàn)如下。
var strcookie = document.cookie;
var arrcookie = strcookie.spit("=")
var statuscookie = arrcookie[1];
if(statuscookie == "" || statuscookie == "0"){
//retset flag
document.cookie="statuscookie=1";
}else{
window.location.reload();
document.cookie="statuscookie=0";
}
如果僅僅是返回上頁(yè),不需要刷新,JS可以有很多種寫(xiě)法:
window.history.go(-1)
window.history.back()
window.history.back(-1)
如果需要刷新,可以有兩種寫(xiě)法:
第一種,返回后重新請(qǐng)求該頁(yè)面
window.history.go(-1);
window.history.go(0)
//winoow.loaction=window.location
第二種借助HTTP頭信息
window.location.href=document.referrer