如何在一个请求中发送来自多个表单的数据
How to send data from multiple forms in one request?
我的网站上有一个表单,点击"添加行"按钮即可动态添加内联表单。当用户单击"提交"按钮时,我希望发送请求中创建的所有表单的数据,而不仅仅是第一个表单(如我当前的解决方案)。我怎么能那样做?我想这需要一些AJAX和JQuery的魔力?每次用户创建新表单并输入内容时,我是否可以以某种方式附加表单的值,序列化整个内容并随请求一起发送?我是网络开发的新手,我还不确定如何做到这一点。最终目标是将表单中的数据存储在数据库中。
我的代码如下:
main.html:
@app.route('/entries', methods=['GET', 'POST'])
def add_entry():
if request.method == 'POST':
print request.form['entry']
return render_template('add_entry.html')
add_entry.html:
<form action="{{ url_for('add_entry') }}" method=post class="form-inline" role="form" id="entry_form">
<div class="form-group">
<input type="entry" class="form-control" name="entry" placeholder="new entry" value="{{ request.form.entry }}">
</div>
<div class="form-group">
<button type="button" class="btn addButton">Add</button>
</div>
<div class="form-group">
<button type="submit" class="btn submitButton">Submit</button>
</div>
</form>
<form action="{{ url_for('add_entry') }}" method=post class="form-inline hide" role="form" id="entriesTemplate">
<div class="form-group">
<input type="entry" class="form-control" name="entry" placeholder="new entry" value="{{ request.form.entry }}">
</div>
<div class="form-group">
<button type="button" class="btn removeButton">Remove</button>
</div>
</form>
form.js:
$(document).ready(function() {
$('.addButton').click(function(){
$('#entriesTemplate')
.clone()
.removeClass('hide')
.removeAttr('id')
.prependTo("#entry_form");
});
<form>
<input type="text" name="name" value="Leo" />
<input type="text" name="age" value="20" />
<input type='submit' />
</form>
<form>
<input type="text" name="name" value="John" />
<input type="text" name="age" value="25" />
<input type='submit' />
</form>
$("form").submit(function (e) {
e.preventDefault();
var data_array = $("form").map(function(){
return $(this).serializeArray();
});
$.ajax({
url:'ajax.php',
data:data_array,
success:function(html){
}
});
});
试试
http://jsfiddle.net/e62hxjzu/
我假设您正在动态创建的每个表单只有一个input
元素和class
:'form control'。如果您想在执行ajax请求之前收集所有这些值,您可以查询这些元素并将它们附加到一个字符串中。我创建了一个示例,它完全基于您的代码,只记录表单中所有输入的值。相关代码片段:
$( '.form-control' ).each(function( index ) {
console.log($( this ).val() );
});
就是这样。你有这个字符串还是数组,取决于你如何存储它。你可以把它传递到ajax请求的data
元素中,然后就可以开始了。希望它能为你指明正确的方向。
我认为您可以使用JQuery和Ajax来完成。这里有一个例子。add_entry.html:
<div class="form">
<div class="row-container">
</div>
<div class="form-group">
<input type="entry" class="form-control init-row" name="entry" placeholder="new entry" value="">
</div>
<div class="form-group">
<button type="button" class="btn addButton">Add</button>
</div>
<div class="form-group">
<button type="button" class="btn submitButton">Submit</button>
</div>
</div>
form.js:
$(document).ready(function() {
function getAllRow(){
var rows=[];
$('.new-row').each(function () {
var row={};
row.rowvalue = $(this).val();
rows.push(row);
})
return rows;
}
$('.addButton').click(function(){
var init_row_value=$('.init-row').val();
$('.row-container').append('<input class="new-row" value="'+ init_row_value +'" disabled>');
});
$('.submitButton').click(function(){
var allRowData = getAllRow();
$.ajax({
type: "POST",
url: "allSubmit.php",
data: allRowData
})
});
});
您将在服务器端获得作为"rowvalue"列表的日期
相关文章:
- 如何从pdftron webviewer获取表单数据
- JS验证ajax返回的html中的表单数据
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 将单击事件添加到数据表
- 预览数据表单
- Ajax数据表单序列化防止双重提交
- 如何在 Spring Framework 中处理表数据表单提交
- 发布大型数据表单 Angular JS
- 覆盖Magento中的默认数据表单提交JS活动
- 保存不带按钮的数据表单
- 更新Highchart数据表单导出按钮
- 将数据表单转换为PDF
- 我的Angular视图没有用数据表单服务器更新
- 如何在不重新加载页面的情况下获取数据表单数据库
- JavaScript SDK返回数据表单嵌套函数
- 使用php AJAX发送数据表单请求失败
- 数据表单$scope在Angular的view (page)中不显示
- 实时交换 HTML 数据表单
- 搜索parse.com数据表单html输入
- 如何在MVC中返回JSON数据表单控制器到jsp