當添加到頁面我要麼使用location.reload(true);
或執行大量的jQuery的選項將DIV動態添加到頁面的註釋。我已經有了解釋頁面本身的註釋的代碼,當它加載時必須在JQuery中複製它,這不僅增加了代碼重複和混淆,而且還意味着當我想要更改註釋的解析方式時,我必須更改它事物的PHP方面和JQuery方面。這是值得的,或者我應該刷新頁面?刷新頁面或做一個荒謬的數量的JQuery?
回答
我的做法是將評論提交到服務器,並獲得與您使用顯示評論所包含HTML的XML響應。使用XML響應,您可以使用jQuery將新評論追加到線程中。
可以使用PHP生成HTML部分,這與重新加載頁面時的方式相同。
這樣,你只能修改PHP代碼。
這是我正在尋找的答案。謝謝。 – 2011-03-13 03:15:37
這一切都依賴於差異是否會出現明顯足以使成本給用戶,不這樣做的JS,會比增益你會從它更高。
也就是說,如果你關心你的用戶體驗,你做你自己的方便儘可能多的;)
最終,只有你能回答這個問題,因爲這個人,它需要是值得的, 是你。
將用戶偏好使用JavaScript和更新頁面沒有頁面加載:最有可能是的。
我會說這取決於,要麼你做與jQuery/JavaScript的一切,否則你重裝上的變化。選擇一條路徑,並構建一切工作。 我個人更喜歡使用jquery,所以不僅我會添加jquery的帖子,我會加載與jquery的所有帖子。
這是一個「討論」的問題,所以雖然我會出聲想和你在一起,我停止短,宣佈「更好」的方式來解決這個問題。
客戶端/服務器耦合。 您提到您擔心客戶端/服務器之間的耦合;那就是jQuery解決方案,如果你想改變一些關於你的評論的話,你將不得不改變客戶端和服務器邏輯。這在可維護性方面很重要。如果您預見到處理註釋的方式會有重大的重新設計,您希望將這些問題分開,並重新加載頁面。
UI流量思考。 是否重新加載分頁符您的用戶界面的流程?如果您正在託管一個有狀態的Web應用程序,那麼這是一個重要的考慮因素。如果您正在託管標準博客/ CMS類型的應用程序,則重新加載頁面可能不是什麼大問題。
的努力涉案金額。 寫這個jQuery例程需要多少時間?一小時?一天?看起來簡單地重新加載頁面是一個快速,簡單的1.0版本的解決方案;您可以隨時進行改進。還要考慮決策的後果,以及未來需要做出什麼樣的改變。
然而,這次討論的有效性只與您的設計一樣有效。退一步看看你的設計往往很有啓發意義。爲什麼這個問題甚至存在?在它發生之前,您是否可以改變設計以解決這個問題?嗯...
-tjw
我很欣賞你提出的想法,並且已經考慮到了他們。不過,我最近幾次的陳述讓我有點困惑。會不會總是需要兩個單獨的代碼來源這種事情?一個用於動態添加評論,另一個用於加載頁面加載時的所有評論。 – 2011-03-13 03:24:17
似乎你正試圖避免最好的解決方案(jQuery),因爲你還不是專家。俗話說,當你唯一擁有的工具是錘子時,所有東西看起來都像釘子。換句話說,確保你在工作中使用最好的工具,而不僅僅是你最熟悉的工具。恰巧我強烈反對@marcos接受的解決方案;是的,它會工作,但其他許多事情也一樣。他的解決方案完全違反了良好的MVC風格設計,而且通常只是糟糕的建議。 – 2011-03-13 03:34:05
這裏有幾種不同的選擇,這取決於你需要什麼。一種選擇是做一個完整的帖子,有時候是正確的。在幾乎所有情況下,它都應該是javascript不可用的情況下的默認設置(例如屏幕閱讀器)。爲此,您可以添加(漸進式增強)要麼執行AJAX請求返回HTML的能力,即回發到生成部分頁面的方法並簡單地替換它。如果您在最初生成時設計頁面以合併此部分視圖,則甚至不必重複代碼 - 只需通過AJAX調用時以不同方式使用它即可。或者,您可以執行AJAX請求返回數據或完全在客戶端上操作客戶端上的數據以更新視圖,並只將所有更新的數據推送回服務器。您選擇的是完全取決於應用程序和您的偏好。根據你的文章,我建議看一下MVC框架,它允許你生成部分視圖,因爲它似乎解決了你最大的擔憂。它將頁面上的JavaScript數量保持得較小,並專注於簡單地發出請求並更新頁面的位,同時將格式和數據解析留在服務器上 - 所有這些都是通過AJAX在必要時訪問的。
好像有兩個問題:
- 你應該費心實際使用Ajax這個?
- 如果您使用Ajax,是否有避免重複代碼的方法?
問題1:我相信這是不是專門的編程問題:是否Ajax是必要的取決於你的應用程序和用戶的需求(或客戶端或經理或產品manager--可能不是你) 。更新是否重要?那麼沒有 - 它可以更平滑些,而且你甚至可以很好地製作它。好消息是:你有一個「工作版本」,現在你知道做Ajax會有多少工作 - 你可以得到一個更明智的估計給那些支付$的人。
問題2:我的原則是不寫即使你在PHP,一旦在Javascript編寫一次相同的代碼twice--。這是你感到沮喪的。這是我在推理時的推理:
您有評論,您需要將其轉換爲HTML。您可以在兩個位置之一執行此操作:服務器或客戶端(Javascript) - 而不是兩者。因此...
如果實現渲染服務器上的評論,你應該通過使用Ajax架構進行此操作。因此,Ajax響應不應該返回XML或JSON,而應該返回和可以簡單地插入到DOM中的HTML段。您可以在初始頁面顯示和Ajax響應之間在後端共享相同的渲染代碼。
如果您想要在Javascript中實現呈現,請在頁面首次呈現時使用相同的呈現代碼,就像在響應Ajax請求時一樣。這對某些人來說有點不直觀 - 但是真的是避免重複的祕密。爲評論選擇標準的「結構化格式」 - XML或JSON。編寫一個知道如何將其呈現給頁面的函數。然後,您可以使用相同的代碼來處理Ajax業務。
您選擇哪種路徑取決於很多因素。如果你有一個公共網站並且關心搜索引擎搜索到的評論,那麼技巧1會更容易一些。如果你不那麼關心它,並且預計會有很多動態的Javascript行爲,那麼後面的選項會更好地爲你服務。
- 1. 荒謬功能的反轉
- 2. 爲什麼distanceFromLocation:方法返回一個荒謬的數字
- 3. 封裝變得荒謬嗎?
- 4. ReadInt()返回荒謬值
- 5. jQuery Mobile的頁面刷新
- 6. JQuery的頁面刷新
- 7. JQuery頁面刷新
- 8. 荒謬的價值主(int argc,char ** argv)
- 9. 如何處理荒謬的評論?
- 10. vector push_back顯示荒謬的結果
- 11. iPhone荒謬的內存泄漏
- 12. Asynctask採取荒謬的時間
- 13. NSData的荒謬長度錯誤
- 14. 你給一個方法最荒謬的名字是什麼?
- 15. 刷新一個WPF頁面
- 16. 傳遞一個變量從jQuery到PHP與頁面刷新
- 17. 頁面刷新/刷新在jQuery Mobile的每個頁面上執行$(document).ready()
- 18. 爲什麼FileManager.enumerator使用荒謬的內存量?
- 19. 我該如何做這個荒謬的SQL多重連接語句?
- 20. jQuery的數據表刷新不刷新頁面
- 21. 使用jQuery刷新頁面
- 22. 刷新jQuery Mobile頁面
- 23. Jquery .load()和頁面刷新
- 24. jQuery POST刷新頁面
- 25. 關於多個類的Visual Studio中的荒謬錯誤
- 26. 使用jQuery做一個onClick div刷新
- 27. System.reactive跨線程操作荒謬
- 28. Heisenbug - > NSInvalidArgumentException:能力是荒謬
- 29. T-SQL DateDiff返回荒謬結果
- 30. Java/Swing FEST測試失敗荒謬
我沒有看到這是一個完整的jQuery代碼量。 – 2011-03-13 02:51:08
啊,是的,我道歉;可笑的是錯誤的選擇的話。我對JQuery仍然很陌生,它很可能需要我花一些時間來實現它,並且在我的其他代碼中,它到目前爲止將是該項目的一大部分。 – 2011-03-13 03:28:27