jQuery:添加无限输入并处理表单数据

jQuery:添加无限输入并处理表单数据,jquery,html,css,forms,Jquery,Html,Css,Forms,我有一个联系人数据库的表单,用户可以点击加号并添加无限多的电话输入字段、电子邮件字段和地址字段。我已经从回答的其他问题中找到了如何做到这一点 现在我需要知道如何处理这些数据。可以无限添加的每个字段都有相同的名称。我在想,这些将被添加到一个数组中,在这个数组中,我可以使用for或。each并循环通过它 最后一件事是,我通过jQueryAjax将这些信息发送到一个PHP页面,该页面将处理所有数据。我在PHP方面比在jQuery方面熟练得多,但显然jQuery对于不必刷新页面非常有用。我的问题是这是一

我有一个联系人数据库的表单,用户可以点击加号并添加无限多的电话输入字段、电子邮件字段和地址字段。我已经从回答的其他问题中找到了如何做到这一点

现在我需要知道如何处理这些数据。可以无限添加的每个字段都有相同的名称。我在想,这些将被添加到一个数组中,在这个数组中,我可以使用for或。each并循环通过它

最后一件事是,我通过jQueryAjax将这些信息发送到一个PHP页面,该页面将处理所有数据。我在PHP方面比在jQuery方面熟练得多,但显然jQuery对于不必刷新页面非常有用。我的问题是这是一个坏习惯吗?看起来慢了一点。我知道我可以在js中错误检查和处理数据,然后将处理后的数据发送到PHP页面以输入数据库,但我担心用js进行错误检查会有多困难

您只需使用
jQuery(yourDiv).data('mydata',anyObject)
然后迭代

jQuery(selector of your divs).each(function(item){
    var obj = jQuery(item).data('mydata');
    // do anything you want here
})

两种方法在PHP中都有相似的结果

第1行


第2排


$\u POST将有一个值数组,其索引显示它们所属的行

第1行


第2排



$\u POST每行将有一个数组

添加表单元素时,请注意,如果在名称末尾添加方括号,则发布的数据将被构造为类似数组的对象:

<input type="text" name="extrainput[]"/>

您可以在html中使用数组作为名称:

var i = 0;
$('.add').click(function(){
   var newE = $('<input/>').attr({type:'text',name:'data[]',value:i,'class':'inputs'});
   $('.myform').append(newE).hide().fadeIn('1000');
});
然后您可以使用php获得此数组:

foreach($_POST['data'] as $key => $value){
   echo $key.':'.$value.'<br>';
}
foreach($\u POST['data']作为$key=>$value){
回显$key.:.$value.
; }
我忘了提到我知道你可以这么做,但是在jQuery中你是如何处理的?你现在是如何创建字段的?@TylerDusty编辑了我的answer@Asad我已经有了创建输入的方法。我使用的是完全相同的东西,但没有[]。我想问的是如何处理jQuery中的所有语言[]。比如我如何获取这些值并存储它们?@TylerDusty你想将它们存储在哪里?我的意思是,它们就在你的页面中,如果你想重复使用它们,请使用
$('[name=“languages[]]”)。每个(…)
你不知道该怎么做?不知道为什么有人会投反对票,但如果我在name字段中使用
phone[]
,那么在PHP中,每个($\u POST('phone')作为$p){//为每个人做点什么}
work?很明显,提出问题的人知道这部分过程,而问题是关于jquery的。下次-检查标签!我的下一个问题是,如何通过jQueryAjax将大量表单数据(在本例中可能是无限的)发送到PHP页面?我见过将所有表单数据添加到FormData obj中,但这并没有得到很好的解释。
<input type="text" name="row[2][fullname]" />
<input type="text" name="row[2][telephone]" />
<input type="text" name="extrainput[]"/>
$('#addbutton').click(function(){
    $('#myform').append('<input type="text" name="languages[]"/>')
});
$('[name="languages[]"]').each(...)
var i = 0;
$('.add').click(function(){
   var newE = $('<input/>').attr({type:'text',name:'data[]',value:i,'class':'inputs'});
   $('.myform').append(newE).hide().fadeIn('1000');
});
var data = {};
$.each($('.inputs'),function(i,val){
      data[i] = $(val).val();
});
callajaxfunction(data);  
foreach($_POST['data'] as $key => $value){
   echo $key.':'.$value.'<br>';
}