Javascript 如何在onClick事件中创建循环?
我想编写一个Javascript 如何在onClick事件中创建循环?,javascript,ruby-on-rails,ruby,ajax,loops,Javascript,Ruby On Rails,Ruby,Ajax,Loops,我想编写一个onClick事件,它多次提交表单,在多选字段中遍历所选项目,每次提交一次 如何对循环进行编码? 我正在RubyonRails中工作,并使用remote_function()为ajax调用生成JavaScript。我的快速答案(我还没有编写过代码)是创建另一个函数,该函数使用XMLHTTPRequest和单个调用的特定参数创建POST。然后在onClick()处理程序中,在循环遍历选定项时调用该函数 我建议您仅使用一个虚拟HTML页面和javascript进行概念验证,然后尝试找出如
onClick
事件,它多次提交表单,在多选字段中遍历所选项目,每次提交一次
如何对循环进行编码?
我正在RubyonRails中工作,并使用remote_function()
为ajax调用生成JavaScript。我的快速答案(我还没有编写过代码)是创建另一个函数,该函数使用XMLHTTPRequest和单个调用的特定参数创建POST。然后在onClick()处理程序中,在循环遍历选定项时调用该函数
我建议您仅使用一个虚拟HTML页面和javascript进行概念验证,然后尝试找出如何使其在RoR中工作
另外,为什么您要尝试从浏览器进行多次调用,而不是在RoR控制器中处理循环条件?您必须手动编写一些javascript。Rails的生成器不会为您完成如此复杂的任务 Prototype.js将为您完成几乎所有的繁重工作。在我脑海中,代码看起来是这样的:(未测试)
弗斯特
第二
第三
第四
submitFormMultipleTimes=函数(){
$F('select-box')。每个(函数(selectedItemValue){
new Ajax.Request('/somewhere?val='+selectedItemValue,
{method:'POST',postBody:Form.serialize('my-Form')};
});
}
注:
- 使用Prototype的
方法获取所选项目值。它返回多个选择框的数组$F()
- 使用
将数据作为Ajax.Request
发送到服务器POST
对于服务器来说,这与提交普通表单完全相同 - 使用
从表单中获取数据并将其粘贴到请求体中。Form.serialize
这与您正常提交表单时发送的数据完全相同
- 除非您正在修改浏览器DOM,否则我想不出您希望这样做的原因。(但在不完全了解您试图做什么的情况下,我可能会在本例中出错=)
您应该能够在一篇文章中从多个对象(甚至表单中嵌套的复杂对象)发回数据
rails代码很有可能比您提出的任何javascript都要简单得多,更容易编写(也更容易调试!)
如果您需要根据用户选择的内容更新页面的不同部分,您仍然可以通过render:update块中的RJS对DOM进行多次更新,因此这应该不是问题
您还将(大)受益于仅一个服务器往返,而不是使用多个POST所需的多次往返
<%= 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>