2012-07-04 26 views
0

我使用PHP CodeIgniter和jQuery。什麼是顯示「成功」或「錯誤」jquery對話框的好方法?

說例如我有一個<table>(也許員工)。 現在在上述表格上方有一個「添加員工」按鈕。 此按鈕用<form>打開jQuery-dialog。當這個表單提交時,它當然會進入服務器端(驗證重複條目是否存在),然後將其發送回更新表的相應視圖。

我想要做的是顯示一個對話框,表示僱員已成功添加或者它是重複條目。

我被

appname/controller/action?addSuccess=true 

appname/controller/action?addSuccess=false 

每次做這個,我返回到視圖,然後我的網頁上,在我$(document).ready()我檢查這樣的查詢字符串,並打開相應的對話框(成功或錯誤對話框)。我現在的問題是,如果我刷新頁面(相同的網址),我會再次獲得對話框(雖然沒有任何反應)。

問題:這種方法足夠好嗎?任何好的建議,以改善這一點? :)

非常感謝!

+0

這個問題的標題讓我無語。請將其改爲更具描述性的內容。 – japreiss

回答

2

而不是將該信息作爲查詢參數傳遞,爲什麼不存儲該信息代碼點火器閃存數據。這些數據只在一個重定向中持續存在。下次您重新加載頁面時,數據將不會被設置(因爲CI會自動爲您刪除),並且您不會意外顯示該警告。

  • 表單已提交給服務器。在CI的Flash消息系統中設置適當的值。
  • 重定向到另一個網址?或者也許顯示另一個視圖。
  • 在視圖html中,使用php讀取該消息的值並在javascript中設置適當的值。
  • 讀取js值並相應地顯示彈出窗口/模式/消息。
  • 刷新下次頁面時,閃存消息數據將由CI自動刪除。

一些示例代碼意味着重定向查看HTML:(我不這樣做的PHP ...)

var shouldDisplayWarning = "<? php code that sets some value based on flash variable ?>"; 
if (shouldDisplayWarning === "yes") { 
    displayWarning(); 
} 

延伸閱讀:http://codeigniter.com/user_guide/libraries/sessions.html(一半時,他們提到閃存數據頁)

+0

我喜歡你的想法:)謝謝先生。雖然您可以編輯上面的代碼以強調(對於其他讀者)您應該從會話中「刪除」數據。 – Incognito

+0

那麼,真的不應該使用會話來存儲一個關閉的數據。這就是閃存數據的意義。我提到會議,純粹是因爲當時我不知道CI是否真的有Flash數據。在Asp.Net MVC中,它們被稱爲TempData。我想我只是不會提到會議。你可以將它標記爲答案:) –

+0

不錯,喜歡flashdata :)感謝您的答案和新的知識:) – Incognito

相關問題