无法获取表单数据

时间:2017-07-03 12:48:10

标签: javascript jquery html forms

好吧,所以我几个小时都没有运气,坐立不安。

我在页面上有多个表单(总共6个),每个表单都有这种结构

表单1

<form method="post" action="" id="Television_form">
.
.
.
<button class="btn btn-sm btn-success" id="Television" name="save"> Save</button
</form>

表单2

<form method="post" action="" id="Video_form">
    .
    .
    .
    <button class="btn btn-sm btn-success" id="Video" name="save"> Save</button
    </form>

当有人点击“保存”时,我正在尝试获取表单数据。 这是它的jquery代码: -

$("[name='save']").click(function(e){
  e.preventDefault();
  // alert("was");
  id = $(this).attr('id');
  //send the current form via ajax now
  form_name = "#"+id+"_form";
  data = $(form_name).serialize();
  alert(form_name);
  alert(data);

})

问题是,我为alert(form_name)得到正确值,并在点击第一张表单的保存时更正了alert(data) 的数据

如果我点击第二个表单的保存,我会获得alert(form_name)的正确数据,但data空白。为什么jquery没有获取数据?

一些帮助会很好,我真的在敲我的头。

编辑: -

//这是真实的一行: -

<form action="" method="post" id="<?php echo $expereince_details->header_name; ?>_form">

2 个答案:

答案 0 :(得分:3)

您的表单代码未正确关闭,但ID上缺少"

<form method="post" action="" id="Video_form">

此外,您可能需要考虑将事件附加到表单而不是按钮,这样可以更轻松地进行开发。

以下方式不再依赖于ID。

$("form").on('submit', function(e)
{
    e.preventDefault();

    let data = $(this).serialize();

    console.log(data);


    return false;
})

答案 1 :(得分:0)

Ian回答完美,但您还需要在按钮中添加提交类型

<button class="btn btn-sm btn-success" type="submit" id="Television" name="save"> Save</button>