代码之家  ›  专栏  ›  技术社区  ›  Brent

如何在onClick事件中创建循环?

  •  3
  • Brent  · 技术社区  · 16 年前

    我想写 onClick

    如何编写循环代码?

    我在rubyonrails工作并使用 remote_function() 为ajax调用生成JavaScript。

    3 回复  |  直到 10 年前
        1
  •  5
  •   martinatime    16 年前

    我的快速回答(因为我还没有编写代码)是创建另一个函数,该函数使用XMLHTTPRequest和单个调用的特定参数创建POST。然后,在onClick()处理程序内部,在循环选定项时调用该函数。

    另外,为什么要尝试从浏览器进行多个调用,而不是在RoR控制器中处理循环条件?

        2
  •  2
  •   Orion Edwards    16 年前

    你必须手动编写一些javascript。Rails的生成器不会为你做这么复杂的事情。

    <%= javascript_include_tag 'prototype' %>
    
    <form id="my-form">
      <input type="text" name="username" />
    
      <select multiple="true" id="select-box">
        <option value="1">First</option>
        <option value="2">Second</option>
        <option value="3">Third</option>
        <option value="4">Fourth</option>
      </select>
    </form>
    
    <script type="text/javascript" language="javascript">
    submitFormMultipleTimes = function() {
      $F('select-box').each(function(selectedItemValue){
        new Ajax.Request('/somewhere?val='+selectedItemValue, 
          {method: 'POST', postBody: Form.serialize('my-form')});
      });
    }
    </script>
    
    <a href="#" onclick="submitFormMultipleTimes(); return false;">Clicky Clicky</a>
    

    注:

    • 使用原型的 $F() 方法获取所选项的值。它为多个选择框返回一个数组

    • 使用 Ajax.Request 将数据作为 POST .
      对于服务器来说,这看起来和提交一个普通表单完全一样

    • 使用 Form.serialize 将数据从表单中取出并粘贴到请求的主体中。
      这与正常提交表单时发送的数据完全相同

        3
  •  1
  •   Tim Cooper    13 年前

    您应该能够在一篇文章中从多个对象(甚至是表单中嵌套的复杂对象)发回数据。

    如果您需要根据用户选择的内容更新页面的不同部分,您仍然可以通过render:update块中的RJS对DOM进行多次更新,所以这不应该是一个问题。

    您还将获得(很大的)好处,只需一次服务器往返,而不是使用多个post需要多次往返。