2011-11-17 70 views
1

我有一個多部分表單的要求,我想應用一些巧妙的提交邏輯。這裏的理念,形式有3個步驟:每次完成一個部分時提交表單的最佳方式

  1. 個人聯繫方式
  2. 報價詳情
  3. 最終意見

正如任何好的營銷人員,我不想失去對任何數據事件,用戶沒有完成這個(有點長)形式的所有步驟。 因此,我想要做的是有形式提交每個步驟完成。因此,如果用戶退出,我們仍會捕獲完成的步驟中的詳細信息。

理想我實際上並不希望有表單提交3時間,如果它要簡單的電子郵件的腳本,我們希望通過爲每個「完整」提交得到3個結果。 所以我試圖找到一些聰明的方式來存儲數據,並在一段時間後提交或沿着這些線。

我打算在HTML中構建這個& JavaScrip(&如果需要在PHP中)。任何人都可以建議最好的路線來實現這一點(從過去的經驗等),然後我得到我的雙腳溼!

感謝您的時間&任何建議

+0

分頁+ cookies/localStorage +評論頁面 – zzzzBov

+0

將每一步都放在單獨的表格中,每一步完成後使用ajax提交。 – Birey

+0

我用javascript製作了一個多部分表單,一旦它們完成,我就從視圖中隱藏了部分,並在最後一頁顯示了提交按鈕。 – bozdoz

回答

1

最好的方式實現這一目標是有三個獨立的形式,每個頁面。在提交每個表單後,使用jQuery向服務器上的PHP頁面發出post()請求,其中包含serialized()表單數據。然後這個PHP頁面將表單的內容存儲在數據庫中供稍後檢索。

如果ajax請求成功,顯示錶單的下一頁,否則顯示錯誤,告訴用戶發生了什麼。

進一步閱讀.post().serialize()

1

你需要存儲調查的臨時結果服務器支持。當用戶提交下一部分時,您將簡單地向查詢附加新答案。訣竅在於檢測被放棄的查詢,但我認爲如果調查不會在24小時內完成,則可以安全地假定用戶關閉了瀏覽器,並且不會追加任何未來的數據。

您必須在服務器上實現持久性,SQL數據庫是PHP的最佳選擇 - 數百萬個示例。

1

如果我理解你的問題正確,那麼你正試圖在同一頁嚮導的行爲,在這種情況下,你可以使用有三種形式。

一個部分完成後做一個Ajax調用並保存填寫的數據在某些臨時數據庫表,最後當用戶完成,你可以整理臨時表中的數據,並在主表堅持形式。

如果用戶沒有完成所有步驟,那麼您可以在一段時間後清理臨時表,或者您可以在某個「不完整」表中移動它以防萬一您想要執行一些BI數據。

1

我會序列化響應並將其存儲在數據庫{id,stage1 data,stage2 data,last_entry_timestamp}中。

假設驗證在每個階段存儲數據之前完成,

  • 第1階段,如果一個項目存在我會檢查,如果沒有創建一個新條目,並存儲序列化的stage1信息並設置時間戳,否則檢索階段1的信息。 (後/前)
  • 階段2如果沒有設置,我會更新創建的條目與序列化stage2信息和設置時間戳,否則檢索和更新。
  • 階段3我會檢索階段1和階段2的信息,並提交。然後我會刪除該條目。

最後我會設置一個cron作業來查看超過X小時的所有條目,提交它們並刪除條目。

相關問題