我有一个联系人数据库表单,用户可以单击加号并添加无限数量的电话输入字段,电子邮件字段,地址字段。我已经从其他问题中找到了解决方法。
现在我需要知道如何处理这些数据。可以无限添加的每个字段具有相同的名称。我在想这些会被添加到一个数组中,我可以在其中使用for或.each并循环遍历它。
最后一件事是我通过jQuery Ajax将这些信息发送到PHP页面,该页面将处理所有数据。我在PHP中比在jQuery中更擅长PHP,但显然jQuery对于不必刷新页面很有用。我的问题是这种不良做法?它看起来有点慢。我知道我可以在js中进行错误检查和处理数据,然后将处理后的数据发送到PHP页面以便在数据库中输入,但我担心用js进行错误检查要困难得多。
答案 0 :(得分:4)
添加表单元素时,请注意,如果在名称的末尾添加方括号,则发布的数据将被构造为类似数组的对象:
<input type="text" name="extrainput[]"/>
然后,您可以迭代结果并处理用户输入。
因此,例如,如果您需要无限数量的文本框供用户输入其语言,您可以使用:
$('#addbutton').click(function(){
$('#myform').append('<input type="text" name="languages[]"/>')
});
其中addbutton
是用户点击添加其他输入的按钮的ID。
要迭代这些表单元素,您可以使用:
$('[name="languages[]"]').each(...)
答案 1 :(得分:3)
两种方法,在PHP中都有类似的结果
第1行
<input type="text" name="fullname[]" />
<input type="text" name="telephone[]" />
第2行
<input type="text" name="fullname[]" />
<input type="text" name="telephone[]" />
等
$ _ POST将有一个值数组,其索引显示它们属于哪个行
第1行
<input type="text" name="row[1][fullname]" />
<input type="text" name="row[1][telephone]" />
第2行
<input type="text" name="row[2][fullname]" />
<input type="text" name="row[2][telephone]" />
$ _ POST每行会有一个数组
答案 2 :(得分:0)
你可以简单地使用
jQuery(yourDiv).data('mydata', anyObject);
然后迭代
jQuery(selector of your divs).each(function(item){
var obj = jQuery(item).data('mydata');
// do anything you want here
})
答案 3 :(得分:0)
您可以在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');
});
并使用ajax发送:
var data = {};
$.each($('.inputs'),function(i,val){
data[i] = $(val).val();
});
callajaxfunction(data);
然后你可以用php获取这个数组:
foreach($_POST['data'] as $key => $value){
echo $key.':'.$value.'<br>';
}