2

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

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

最后一件事是我通过 jQuery Ajax 将这些信息发送到将处理所有数据的 PHP 页面。我在 PHP 方面比在 jQuery 方面更熟练,但 jQuery 显然对于不必刷新页面很有用。我的问题是这是不好的做法吗?它似乎有点慢。我知道我可以错误检查并处理 js 中的数据,然后将处理后的数据发送到 PHP 页面以输入到数据库中,但我担心使用 js 进行错误检查有多难。

4

4 回答 4

4

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

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

然后,您可以迭代结果并处理用户输入。

因此,例如,如果您需要无限数量的文本框供用户输入他的语言,您可以使用:

$('#addbutton').click(function(){
    $('#myform').append('<input type="text" name="languages[]"/>')
});

addbutton用户单击以添加另一个输入的按钮的 ID 在哪里。

要遍历这些表单元素,您可以使用:

$('[name="languages[]"]').each(...)
于 2012-11-24T21:00:56.780 回答
3

两种接近它的方法,在 PHP 中都有相似的结果

第 1 行

<input type="text" name="fullname[]" />
<input type="text" name="telephone[]" />

第 2 行

<input type="text" name="fullname[]" />
<input type="text" name="telephone[]" />

ETC

$_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 每行有一个数组

于 2012-11-24T21:00:06.763 回答
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
})
于 2012-11-24T20:59:46.090 回答
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>';
}
于 2012-11-24T21:15:46.267 回答