Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 页面上的表单太多-这是一个问题吗_Javascript_Ajax_Ruby On Rails 3_Forms - Fatal编程技术网

Javascript 页面上的表单太多-这是一个问题吗

Javascript 页面上的表单太多-这是一个问题吗,javascript,ajax,ruby-on-rails-3,forms,Javascript,Ajax,Ruby On Rails 3,Forms,我正在寻找的做法,这是最可取的编码方面的做法 我有一个评论系统,每个评论,你都可以回复。这让我想到了几个实现这一点的选项(假设后端已经创建) 当用户单击“reply”时,会触发ajax,获取适当的部分(包括AuthenitAction令牌等),并将其插入适当的位置 我对每个评论都有一个隐藏的表单,单击reply将使其可见 我使用javascript在用户单击reply时动态生成表单,并将其插入到单击reply的相应div中 我的每一个问题都是 对于1-这会导致请求、延迟,我不确定这里是否需要aj

我正在寻找的做法,这是最可取的编码方面的做法

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

  • 当用户单击“
    reply
    ”时,会触发ajax,获取适当的部分(包括AuthenitAction令牌等),并将其插入适当的位置
  • 我对每个评论都有一个隐藏的表单,单击
    reply
    将使其可见
  • 我使用javascript在用户单击reply时动态生成表单,并将其插入到单击reply的相应div中
  • 我的每一个问题都是

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

    对于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>
    

    我以前遇到过一个类似的案例,最后我提出了一个类似于您的#1的Ajax解决方案

    对于#2,是的,有太多的形式,即使是隐藏的。我不喜欢那样

    对于#3,我想使用JS模板,这是主干网中流行的样式。但是,当时我没有找到一个成熟且最新的jQuery模板解决方案。在这种情况下,我也没有足够的时间,所以我放弃了

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

    我想1号没问题。不会有太多Ajax请求。用户只会在需要表单时才请求表单,而且延迟太小,根本不会引起注意。我甚至设置了
    sleep
    来增强加载效果:)此外,Basecamp还大量使用Ajax来渲染动态内容

    另外,谢谢Leon修改我的语法:)