2011-03-13 54 views
2

當添加到頁面我要麼使用location.reload(true);或執行大量的jQuery的選項將DIV動態添加到頁面的註釋。我已經有了解釋頁面本身的註釋的代碼,當它加載時必須在JQuery中複製它,這不僅增加了代碼重複和混淆,而且還意味着當我想要更改註釋的解析方式時,我必須更改它事物的PHP方面和JQuery方面。這是值得的,或者我應該刷新頁面?刷新頁面或做一個荒謬的數量的JQuery?

+3

我沒有看到這是一個完整的jQuery代碼量。 – 2011-03-13 02:51:08

+0

啊,是的,我道歉;可笑的是錯誤的選擇的話。我對JQuery仍然很陌生,它很可能需要我花一些時間來實現它,並且在我的其他代碼中,它到目前爲止將是該項目的一大部分。 – 2011-03-13 03:28:27

回答

2

我的做法是將評論提交到服務器,並獲得與您使用顯示評論所包含HTML的XML響應。使用XML響應,您可以使用jQuery將新評論追加到線程中。

可以使用PHP生成HTML部分,這與重新加載頁面時的方式相同。

這樣,你只能修改PHP代碼。

+0

這是我正在尋找的答案。謝謝。 – 2011-03-13 03:15:37

0

這一切都依賴於差異是否會出現明顯足以使成本給用戶,不這樣做的JS,會比增益你會從它更高。

也就是說,如果你關心你的用戶體驗,你做你自己的方便儘可能多的;)

最終,只有你能回答這個問題,因爲這個人,它需要是值得的, 是你。

將用戶偏好使用JavaScript和更新頁面沒有頁面加載:最有可能是的。

0

我會說這取決於,要麼你做與jQuery/JavaScript的一切,否則你重裝上的變化。選擇一條路徑,並構建一切工作。 我個人更喜歡使用jquery,所以不僅我會添加jquery的帖子,我會加載與jquery的所有帖子。

3

這是一個「討論」的問題,所以雖然我會出聲想和你在一起,我停止短,宣佈「更好」的方式來解決這個問題。

  1. 客戶端/服務器耦合。 您提到您擔心客戶端/服務器之間的耦合;那就是jQuery解決方案,如果你想改變一些關於你的評論的話,你將不得不改變客戶端和服務器邏輯。這在可維護性方面很重要。如果您預見到處理註釋的方式會有重大的重新設計,您希望將這些問題分開,並重新加載頁面。

  2. UI流量思考。 是否重新加載分頁符您的用戶界面的流程?如果您正在託管一個有狀態的Web應用程序,那麼這是一個重要的考慮因素。如果您正在託管標準博客/ CMS類型的應用程序,則重新加載頁面可能不是什麼大問題。

  3. 的努力涉案金額。 寫這個jQuery例程需要多少時間?一小時?一天?看起來簡單地重新加載頁面是一個快速,簡單的1.0版本的解決方案;您可以隨時進行改進。還要考慮決策的後果,以及未來需要做出什麼樣的改變。

然而,這次討論的有效性只與您的設計一樣有效。退一步看看你的設計往往很有啓發意義。爲什麼這個問題甚至存在?在它發生之前,您是否可以改變設計以解決這個問題?嗯...

-tjw

+0

我很欣賞你提出的想法,並且已經考慮到了他們。不過,我最近幾次的陳述讓我有點困惑。會不會總是需要兩個單獨的代碼來源這種事情?一個用於動態添加評論,另一個用於加載頁面加載時的所有評論。 – 2011-03-13 03:24:17

+0

似乎你正試圖避免最好的解決方案(jQuery),因爲你還不是專家。俗話說,當你唯一擁有的工具是錘子時,所有東西看起來都像釘子。換句話說,確保你在工作中使用最好的工具,而不僅僅是你最熟悉的工具。恰巧我強烈反對@marcos接受的解決方案;是的,它會工作,但其他許多事情也一樣。他的解決方案完全違反了良好的MVC風格設計,而且通常只是糟糕的建議。 – 2011-03-13 03:34:05

0

這裏有幾種不同的選擇,這取決於你需要什麼。一種選擇是做一個完整的帖子,有時候是正確的。在幾乎所有情況下,它都應該是javascript不可用的情況下的默認設置(例如屏幕閱讀器)。爲此,您可以添加(漸進式增強)要麼執行AJAX請求返回HTML的能力,即回發到生成部分頁面的方法並簡單地替換它。如果您在最初生成時設計頁面以合併此部分視圖,則甚至不必重複代碼 - 只需通過AJAX調用時以不同方式使用它即可。或者,您可以執行AJAX請求返回數據或完全在客戶端上操作客戶端上的數據以更新視圖,並只將所有更新的數據推送回服務器。您選擇的是完全取決於應用程序和您的偏好。根據你的文章,我建議看一下MVC框架,它允許你生成部分視圖,因爲它似乎解決了你最大的擔憂。它將頁面上的JavaScript數量保持得較小,並專注於簡單地發出請求並更新頁面的位,同時將格式和數據解析留在服務器上 - 所有這些都是通過AJAX在必要時訪問的。

0

好像有兩個問題:

  1. 你應該費心實際使用Ajax這個?
  2. 如果您使用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行爲,那麼後面的選項會更好地爲你服務。