2013-05-18 26 views
1

我找這是最明智的編碼習慣在頁面上太多的形式 - 這是一個問題,

我有一個評論系統,爲每個評論,你可以回覆方面的做法。這使我的幾個選項上實施這個(假設已經創建後端)

  1. 當用戶點擊「reply」,阿賈克斯被觸發,得到適當的部分(包括authenitcation令牌等),並將其插入即到適當的地方
  2. 我必須爲每個評論一個隱藏的表單,並單擊reply只會使其可見
  3. 我使用JavaScript來動態生成當用戶點擊回覆的形式,將其插入到適當的div回覆被點擊的地方

我的每個問題是

1 - 這會導致請求延遲,我這裏需要

2不知道阿賈克斯 - 在頁面上太多的形式..試想一下,成千上萬的意見,以便爲每個評論會有這看起來形式或多或少相同

3 - 我不知道我是否可以在客戶端上生成的真實性令牌

形式應該是這個樣子

 <form accept-charset="UTF-8" action="comments/3/reply" data-remote="true" method="post"> 
    <div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"> 
<input name="authenticity_token" type="hidden" value="J0/asxkDH....vdlKLOUuQ9/TAxACWnZKdwy+c="></div> 
        <textarea id="comment" name="comment" class="tae" style="overflow: hidden;"></textarea> 
        <input name="commit" type="submit" value="Send"> 
    </form> 

回答

2

我之前遇到過類似的情況,而且我以與#1類似的Ajax解決方案結束了。

對於#2,是的,即使隱藏,也有太多的表單。我不喜歡那樣。

對於#3,我想使用一個JS模板,它是Backbone中流行的風格。但是,那時我沒有找到一個成熟和最新的jQuery模板解決方案。在這種情況下我也沒有足夠的時間,所以我放棄了。

附加:對於#3 authenticity_token,我沒有測試過這一點,但我不認爲這會是一個問題,如果一個表單模板已輸出到DOM與令牌準備。它們適用於同一用戶和同一類型的對象。我們只需要更改對象ID或其他小事。需要注意的一件事是,一旦處理了成功的Ajax請求,您需要通過Ajax重新加載模板

我覺得#1很好。不會有太多的Ajax請求。用戶只在需要時纔會申請表格,而且延遲時間太短而無法注意。我甚至設置了sleep以增強加載效果:)此外,Basecamp還大量使用Ajax來渲染動態事物。

P.S.感謝萊昂修改我的語法:)

相關問題