2010-11-19 69 views
0

這是一個很難描述的問題。php/mysql/javascript - 頁面加載後需要設置GET變量(包括url)

大圖: ajaxed對話框提交到頁面以創建新的內容集記錄。創建內容集記錄後,這個新創建的內容集應該是選定的內容集,並且所有創建或修改的內容都需要附加新創建的內容集標識。內容集ID是在頁面加載期間使用MySQL中的自動增量字段創建的。

問題詳細信息: 我有一個頁面使用ajax來調出內容集創建對話框。該對話框提交到一個空白的URL,因爲它可能從多個位置調用,並且我希望該對話框提交給它所調用的任何url。在對話框提交到它被調用的頁面之後,頁面上的一些PHP將在MySQL數據庫中創建一個內容集記錄。我需要使用GET變量(最簡單的方法,因爲我已經通過分頁變量以這種方式)傳遞了新創建的記錄的插入標識,但由於頁面必須先加載才能獲取插入標識,因此我沒有填充GET變量需要的所有位置的方式(在頁面鏈接上,php $ _GET變量,url)。

有些事情要考慮:

  • 我將通過一個會話變量通過周圍新建插入ID,除了當有人點擊後退按鈕這會導致問題,會話變量不會恢復到以前的值。
  • 我會使用Javascript和PHP來改變這個插入id變量的各個位置,除非他們拉起另一個提交到空白url的ajaxed對話框,否則空白url當然不會有新的GET變量。而且,這看起來很sl and,而且會是一場噩夢。
  • 我會在創建記錄後,在添加新的GET變量後重定向回同一頁面,除非我無法傳遞POST變量,從而使得錯誤和成功消息成爲完整的屁股疼痛。我不想使用GET vars來告訴頁面顯示什麼錯誤/成功消息,因爲GET vars使用$ _SERVER ['QUERY_STRING']以及空白鏈接在頁面間傳遞。
  • 我可以不創建新創建的內容集自動加載後創建。這使得用戶可以自己加載新創建的內容集,這一點我想避免。

有沒有什麼優雅的解決方案呢?由於網站設置的方式,此問題可能非常獨特,但有人必須處理類似的問題。爲了解決這個小問題,我希望不必過多地改變網站設計。任何想法都歡迎。

回答

0

我不得不同意這裏基於會話的解決方案。請記住,如果用戶返回,您應該能夠創建一種機制以恢復到舊值。爲此,您需要三個會話變量,一個是當前的id值,一個是以前的id值,另一個保存最後一頁的url。通過這種方式,您應該能夠通過檢查當前url是否等於會話變量中存儲的最後一個url並檢查用戶是否點擊了後退按鈕,如果是,則還原爲舊ID。

請注意,這只是一個普遍的概念,我相信你會遇到一些技術問題,需要在像這樣的系統正常工作之前弄清楚。

+0

我真的很喜歡這個想法。這在許多方面可能有用。一個問題是,如果用戶多次點擊後退按鈕,他們可能需要多個id更改,這些更改不會全部存儲在會話var中,但我相信我可以將它與GET var或其他東西一起使用來創建會議ID的永久後退鏈。 – dqhendricks 2010-11-20 19:15:47

0

很確定你想改變URL哈希字符串(不管它叫什麼)。因爲您無法更改網址。基本上看看像Facebook這樣的網站有他們的網址。

+0

你如何改變散列字符串? JavaScript的?這與使用GET var有什麼不同?我不確定我瞭解這是如何幫助解決問題的。 – dqhendricks 2010-11-19 01:16:43

0

我知道你對會話很勉強,但這可能是使用它的好時機。

另一個想法是在你的頁面中使用隱藏的輸入。

在第一個對話框之後,向PHP插入一條記錄的請求(通過ajax),然後獲取插入該記錄的ID。正確?

在Ajax回調,您可以:

一)制式隱藏持有ID的輸入,表格內提出這一點。 id在每一個帖子

b)執行棘手的JavaScript插入「& id = id」到每個鏈接/按鈕url字符串。 jquery在這裏肯定會有用。這是艱難的BC它可以錨鏈接,按鈕操作,不管

我真的不明白你堅持把它放在GET,但你可以使它與一些額外的工作發生。你不能在沒有重載的情況下將它放入網址中,但是你可以確保你之後的任何地方都有它。

相關問題