2011-08-05 58 views
1

在我繼續努力理解散列標籤和頁面導航時,如果用戶使用瀏覽器導航按鈕(例如,後退和前進),我正在重新提交表單數據。我可以保存序列化表單數據嗎?

我使用表單數據的功能是如下:

if(page == "/visits_results") { 

    $('#start').val(start); 

    $.post("visits_results.php", $("#profile_form_id").serialize(), 
    function(data) { 
     $('#search_results').html(data); 
     location.href = "#visits_results=" + start; 
    }); 
} 

這工作得很好,很正常,如果窗體仍是可見的,例如,如果我使用分頁它執行我所期望的。

我的問題是當用戶點擊瀏覽器後退按鈕(表單現在已被刪除),然後他們點擊瀏覽器前進按鈕。事件被觸發,但我的序列化表單數據現在是空的。有沒有辦法緩存表單數據,以便我可以繼續調用它?

有什麼想法?

+0

很容易保存數據? http://www.asual.com/swfaddress/ – locrizak

回答

1

可你有沒有想過使用swfaddress使用localStoragehttp://jsfiddle.net/zDPjm/

+0

window.localStorage.setItem看起來像一個合乎邏輯的解決方案,但它不是持久的。任何示例我可以如何設置/獲取這個cookie值?我在考慮用戶保存一個URL然後嘗試稍後打開它的情況。謝謝! – Paul

+0

@Paul,本地存儲其實很持久。就像cookie一樣。如果你點擊jsFiddle,你會注意到數據仍然保存。 – Joe

+0

@Paul,此外,您的cookie的大小不受限制。 – Joe

2

你最好打賭(我認爲)將存儲序列化的數據在cookie中。當用戶返回到他/她已經填寫的頁面時,從cookie中檢索數據,反序列化它,並將其放回到它所屬的位置。

Cookies是相當瑣碎的工作,有對怪異模式讀取/寫入cookie一個體面的跨瀏覽器的實現:

,或者如果你更喜歡使用插件:

+1

Aww。我想今天我會提供一個很好的答案。這也是我所做的jquery不會在請求之間持續。 –

+0

我可以結合window.localStorage.setItem使用它嗎? – Paul

+0

我猜,你可以編寫一個解決方案,在localStorage可用的地方使用localStorage,並在沒有可用的地方回退到cookie。這真的取決於你想支持哪些瀏覽器。 – karim79

0

哦,當然,你可以做一些非常簡單的,例如:

if ($("#profile_form_id").serialize() != "") serializedFormData = $("#profile_form_id").serialize(); 
$.post("visits_results.php", serializedFormData, /* Rest of Code */ 
相關問題