session_start()致使history.go(-1)返回時沒法保存表單數據的解決方法

問題背景:
html

在填寫完表單提交時,因爲某個表單項可能填寫的不合法,致使提交失敗,返回表單頁面。但返回後全部的表單都被清空了,從新填寫比較麻煩,度娘解釋說,是因爲每一個頁面都調用了session_start()的緣由,在js返回上一頁時,不能保存住表單信息。瀏覽器

解決方法緩存

在公共初始化文件的session_start()以後加入一句:
header('cache-control:private,must_revalidate')服務器

或:session

session_cache_limiter('private')函數

加入上面這個header後,當表單再次提交失敗返回時,頁面將正常的保存住全部填寫的表單信息,包括input、select等,固然也能夠解決在返回頁面時提示「頁面已過時」的警告。post

工做原理:spa

正常的在返回上一頁時,咱們瀏覽器訪問的是緩存的頁面,而若是腳本中使用了session_start()函數後,腳本會強制讓瀏覽器不緩存頁面,瀏覽器會從新訪問服務器刷新頁面,因此當點擊返回,或使用go(-1)方式向上跳轉時會提示頁面已過時、表單內容被清空的現象。htm


版權聲明:除非註明,本文由( manon )原創,轉載請保留文章出處blog

本文連接:session_start()致使history.go(-1)返回時沒法保存表單數據的解決方法

相關文章
相關標籤/搜索