2014-07-11 47 views
2

我有兩個網頁:index.php文件和handler.php index.php文件有一個形式,即提交給handler.php這樣的:插入瀏覽器的歷史記錄條目

handler.php ?輸入= +一些數據

我的目標是讓瀏覽器的後退按鈕需要我index.php?input=some+data而不是簡單地index.php做一些事情。我怎樣才能做到這一點?理想情況下,我寧願使用PHP的,而不是JS把儘可能多的做盡可能

解決方案: 我補充提交處理程序,這是否:

function onFormUpdate() 
{ 
    window.history.replaceState({} , '', 'index.php?' + document.forms[0].serialize()); 
} 

這種方式,形式將不會從提交index.php,但是從index.php?input=some+data。也就是說,後退按鈕會讓我回到index.php?input=some+data

+0

我不認爲修改歷史是可能的。您可以考慮在提交表單之前使用網址的哈希(#)(例如)。 – Nicolas

+0

等待,當您返回發送該數據的頁面時,是否希望將數據發送到index.php? – Max

+0

@Max是的,這正是我想要它做的。嘗試返回到index.php時,應該將相同的數據發送到index.php。尼古拉斯:我不需要修改歷史,我需要*製作歷史。例如,我可以將表單提交給index.php,然後用相同的URL參數重定向到handler.php。這樣,後退按鈕會讓我回到'index.php?input = some + data' ...這裏的問題是,當我真正去index.php?input = some + data時,它會將我重定向到處理程序。 php?input = some + data – Pavel

回答

0

你可以這樣做:(JS)

history.replaceState({}, '', 'index.php?input=some+data'); 

提交之前。

但我不認爲你需要這樣做,我的瀏覽器(firefox,儘管我認爲chrome會這樣做)在提交前保存表單數據,所以當我從處理程序返回時,表單仍然有輸入。

+0

我會試試。在FF中,我用來保存表單,然後在更新FF之後的某個時候,它停止工作,表單數據現在被重置。 Chrome保留它...但目標實際上是爲了獲得index.php?input = some + data在真實歷史記錄中,以便我可以返回並複製該鏈接。所以它不僅僅是保存表單數據。 – Pavel

+0

已驗證,它確實是我想要的。 'onsubmit =「history.replaceState({},'','index.php?'+ document.forms [0] .serialize());」' – Pavel