【问题标题】:Too many forms on a page - is it an issue页面上的表格太多 - 这是一个问题
【发布时间】:2013-05-18 07:32:45
【问题描述】:

我正在寻找在编码实践方面最可取的做法

我有一个评论系统,对于每条评论,你都可以回复。这让我有几个实现这一点的选择(假设后端已经创建)

  1. 当用户单击“reply”时,将触发 ajax,获取适当的部分(包括身份验证令牌等)并将其插入适当的位置
  2. 我的每条评论都有一个隐藏表单,点击reply 只会让它可见
  3. 当用户点击回复时,我使用 javascript 即时生成表单并将其插入到点击回复的相应 div 中

我的问题是

for 1 - 这会导致请求、延迟,我不确定这里是否需要 ajax

for 2 - 页面上的表单太多。想象一下成千上万的 cmets,因此对于每个评论,都会有一个看起来或多或少相同的表单

for 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>

【问题讨论】:

    标签: javascript ajax ruby-on-rails-3 forms


    【解决方案1】:

    我之前遇到过类似的情况,我以与您的#1 类似的 Ajax 解决方案结束。

    对于#2,是的,表格太多了,即使是隐藏的。我不喜欢那样。

    对于#3,我想使用 JS 模板,这是 Backbone 中流行的样式。但是,当时我并没有找到成熟且最新的 jQuery 模板解决方案。那个时候我也没有足够的时间,所以我放弃了。

    add: 对于#3 中的authenticity_token,我还没有测试过,但如果表单模板已经输出到DOM 中并准备好令牌,我认为这不会是一个问题。它们适用于相同的用户和相同类型的对象。我们只需要更改对象 id 或其他小事。需要注意的一点是,一旦处理成功的 Ajax 请求,您需要通过 Ajax 重新加载模板

    我认为#1 很好。不会有太多的 Ajax 请求。用户只会在需要时请求表单,并且延迟太小而无法注意到。我什至设置了sleep 来增强加载效果:) 此外,Basecamp 还大量使用 Ajax 来渲染动态的东西。

    附注感谢 Leon 修改我的语法:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多