如何获取输入字段值数组并通过Ajax调用传递它

时间:2018-05-16 15:35:49

标签: javascript jquery html

我有一个网页表单,现在看起来像这样。问题是我有一个选项,可以在它们下面添加更多动态行,它们看起来相同并具有相同的名称属性。我有一个提交按钮,它获取所有输入字段的值。提交的值通过对我的PHP的Ajax调用,我必须将它们插入到我的数据库中。

Access:
<tr>
  <td><input type"text" name="access[name]"></td>
  <td><input type"text" name="access[type]"></td>
  <td><input type"text" name="access[description]"></td>
</tr>

student:
<tr>
  <td><input type"text" name="student[name]"></td>
  <td><input type"text" name="student[type]"></td>
  <td><input type"text" name="student[description]"></td>
</tr>

到目前为止,我无法获取数组中输入字段生成的所有值,以便我可以正确地对它们进行排序并将其插入到我的数据库中。

我一直在寻找我的数组结构,看起来像是一个正确的JSON格式。但我不知道如何在Ajax调用中执行此操作。

access[
         name:xyz,
         type:xyz,
         description
      ]
student[
         name:xyz,
         type:xyz,
         description
      ]

我的Ajax功能:

    $('.submit').on('click',function(){

    var access;
    $('input[name^="Access"]').each(function() {
        access= ($(this).val());
    });
    var student;
    $('input[name^="student"]').each(function() {
        student= ($(this).val());
    });

    $.ajax({
           url: '../php/Submission.php',
           type: 'post',
           data: {access:access,student:student}
       },
           function(data1)
            {
                console.log(data1);
            }
      );
}); 

我知道我的Ajax函数不是写的,但是我已经尝试了很多代码来使它工作,结果它搞砸了,不知道现在要做什么。

1 个答案:

答案 0 :(得分:3)

将您的accessstudent变量更改为数组,并将值添加到它们中(注意:您只需使用this.value代替$(this).val()):

var access = [];
$('input[name^="Access"]').each(function() {
    access.push(this.value);
});
var student = [];
$('input[name^="student"]').each(function() {
    student.push(this.value);
});

编辑如果要命名值而不是使用索引,则需要使用对象而不是数组,并手动提取名称:

var access = {};
$('input[name^="access"]').each(function() {
    var name = this.name.substr(7, this.name.length - 8);
    access[name] = this.value;
});
var student = {};
$('input[name^="student"]').each(function() {
    var name = this.name.substr(8, this.name.length - 9);
    student[name] = this.value;
});