简体   繁体   English

jQuery Ajax POST不能动态添加输入,输入具有名称,而我尝试了其他解决方案

[英]Jquery Ajax POST is not getting dynamically added inputs inputs have names and I have tried other solutions

Ajax Post request is only getting the first of the dynamically added input fields at the bottom all others are ignored Ajax Post请求仅使动态添加的输入字段的第一个位于底部,所有其他输入字段均被忽略

I have tried .on() .live() .submit() functions but get the same result. 我曾尝试.on() .live() .submit()函数,但得到了同样的结果。 My php file consists of a print_r($_POST); 我的php文件包含一个print_r($_POST); and nothing else this is put into the console. 并且没有其他东西放到控制台中。

https://pastebin.com/CuAPSzKe - I have put the full code on the pastebin as the whole table and the script used to add the new inputs is included. https://pastebin.com/CuAPSzKe-我将完整的代码放在整个表的pastebin上,其中包括用于添加新输入的脚本。

This is the code to make the call: 这是进行调用的代码:

$('input#submitButton').on('click', function(e)  {

e.preventDefault(); // avoid to execute the actual submit of the form.

var form = $('form#orderForm');
var url = form.attr('action');

$.ajax({
  type: "POST",
  url: url,
  data: form.serialize(), // serializes the form's elements.
  success: function(data)
  {

    console.log(data);

  }
});


});

My expected result is to be able to post all dynamically added fields with their names as an array, alternatively all dynamically added fields in their own array. 我的预期结果是能够将所有动态添加的字段及其名称作为数组发布,或者将所有动态添加的字段发布在其自己的数组中。

It is having a major issue due to the way your html is arbitrarily structured and you are missing a end div tag for your item information container. 由于您的html是任意结构的方式,因此它存在一个主要问题,并且您缺少商品信息容器的end div标签。 Fix these issues and it will run. 解决这些问题,它将运行。 You also may want to go ahead and start your first item information with a start of 0 and set your counter to 1 so it is easier to aparse on the backend once you recieve the info. 您可能还想继续,以0开头开始您的第一项信息,并将计数器设置为1,这样一旦收到信息,就更容易在后端进行稀疏分析。

Move your form tag under your first container: 将表单标签移到第一个容器下:

<div class="container">
    <form id="orderForm" method="POST" action="test.php">
        <h2>Address Information</h2>

End tag 结束标签

                    <input type="submit" id="submitButton" name="submitButton" value="Submit">

                </div>
            </div>
    </form>
</div>

Full example of cleaned up code running: 运行清理代码的完整示例:

 function test() { var billName = document.getElementById('bill_name'); var shipName = document.getElementById('ship_name'); var billLine1 = document.getElementById('bill_line_1'); var shipLine1 = document.getElementById('ship_line_1'); var billLine2 = document.getElementById('bill_line_2'); var shipLine2 = document.getElementById('ship_line_2'); var billLine3 = document.getElementById('bill_line_3'); var shipLine3 = document.getElementById('ship_line_3'); var billLine4 = document.getElementById('bill_line_4'); var shipLine4 = document.getElementById('ship_line_4'); var billCounty = document.getElementById('bill_county'); var shipCounty = document.getElementById('ship_county'); var billPostcode = document.getElementById('bill_post'); var shipPostcode = document.getElementById('ship_post'); var billTele = document.getElementById('bill_telephone'); var shipTele = document.getElementById('ship_telephone'); var billEmail = document.getElementById('bill_email'); var shipEmail = document.getElementById('ship_email'); shipName.value = billName.value; shipLine1.value = billLine1.value; shipLine2.value = billLine2.value; shipLine3.value = billLine3.value; shipLine4.value = billLine4.value; shipCounty.value = billCounty.value; shipPostcode.value = billPostcode.value; shipTele.value = billTele.value; shipEmail.value = billEmail.value; } $('input#submitButton').on('click', function(e) { e.preventDefault(); // avoid to execute the actual submit of the form. var form = $('form#orderForm'); var url = form.attr('action'); var test = form.serialize(); alert(test); }); $(document).ready(function () { var counter = 0; $("#addrow").on("click", function () { var newRow = $("<tr>"); var cols = ""; cols += '<td> <input type="text" class="form-control" name="sku' + counter + '" /></td> '; cols += '<td> <input type="text" class="form-control" name="quantity' + counter + '" /></td> '; cols += ' <td> <input type="text" class="form-control" name="price' + counter + '" /></td>'; cols += ' <td> <input type="button" class="ibtnDel btn btn-md btn-danger " value="Delete"></td>'; newRow.append(cols); $("table.order-list").append(newRow); counter++; }); $("table.order-list").on("click", ".ibtnDel", function (event) { $(this).closest("tr").remove(); counter -= 1 }); }); 
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <div class="container"> <form id="orderForm" method="POST" action="test.php"> <h2>Address Information</h2> <div class="row"> <div class="col-6"> <div class="form-group"> <label for="bill_name"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Billing Name</div> </div> <input id="bill_name" name="bill_name" type="text" required="required" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-building-o"></i> </div> </div> </div> </div> <div class="form-group"> <label for="bill_line_1"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Billing Line 1</div> </div> <input id="bill_line_1" name="bill_line_1" type="text" required="required" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-building-o"></i> </div> </div> </div> </div> <div class="form-group"> <label for="bill_line_2"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Billing Line 2</div> </div> <input id="bill_line_2" name="bill_line_2" type="text" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-building-o"></i> </div> </div> </div> </div> <div class="form-group"> <label for="bill_line_3"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Billing Line 3</div> </div> <input id="bill_line_3" name="bill_line_3" type="text" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-building-o"></i> </div> </div> </div> </div> <div class="form-group"> <label for="bill_line_4"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Billing Line 4</div> </div> <input id="bill_line_4" name="bill_line_4" type="text" aria-describedby="bill_line_4HelpBlock" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-building-o"></i> </div> </div> </div> <span id="bill_line_4HelpBlock" class="form-text text-muted">(Not always Needed)</span> </div> <div class="form-group"> <label for="bill_county"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Billing County</div> </div> <input id="bill_county" name="bill_county" type="text" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-globe"></i> </div> </div> </div> </div> <div class="form-group"> <label for="bill_post"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Billing Postcode</div> </div> <input id="bill_post" name="bill_post" type="text" required="required" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-area-chart"></i> </div> </div> </div> </div> <div class="form-group"> <label for="bill_telephone"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Billing Telephone Number</div> </div> <input id="bill_telephone" name="bill_telephone" type="text" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-phone"></i> </div> </div> </div> </div> <div class="form-group"> <label for="bill_email"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Billing Email Address</div> </div> <input id="bill_email" name="bill_email" type="text" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-tablet"></i> </div> </div> </div> </div> </div> <div class="col-6"> <div class="form-group"> <label for="ship_name"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Shipping Name</div> </div> <input id="ship_name" name="ship_name" type="text" required="required" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-building-o"></i> </div> </div> </div> </div> <div class="form-group"> <label for="ship_line_1"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Shipping Line 1</div> </div> <input id="ship_line_1" name="ship_line_1" type="text" required="required" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-building-o"></i> </div> </div> </div> </div> <div class="form-group"> <label for="ship_line_2"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Shipping Line 2</div> </div> <input id="ship_line_2" name="ship_line_2" type="text" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-building-o"></i> </div> </div> </div> </div> <div class="form-group"> <label for="ship_line_3"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Shipping Line 3</div> </div> <input id="ship_line_3" name="ship_line_3" type="text" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-building-o"></i> </div> </div> </div> </div> <div class="form-group"> <label for="ship_line_4"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Shipping Line 4</div> </div> <input id="ship_line_4" name="ship_line_4" type="text" aria-describedby="ship_line_4HelpBlock" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-building-o"></i> </div> </div> </div> <span id="ship_line_4HelpBlock" class="form-text text-muted">(Not always Needed)</span> </div> <div class="form-group"> <label for="ship_county"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Shipping County</div> </div> <input id="ship_county" name="ship_county" type="text" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-globe"></i> </div> </div> </div> </div> <div class="form-group"> <label for="ship_post"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Shipping Postcode</div> </div> <input id="ship_post" name="ship_post" type="text" required="required" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-area-chart"></i> </div> </div> </div> </div> <div class="form-group"> <label for="ship_telephone"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Shipping Telephone Number</div> </div> <input id="ship_telephone" name="ship_telephone" type="text" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-phone"></i> </div> </div> </div> </div> <div class="form-group"> <label for="ship_email"></label> <div class="input-group"> <div class="input-group-prepend"> <div class="input-group-text">Shipping Email Address</div> </div> <input id="ship_email" name="ship_email" type="text" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-tablet"></i> </div> </div> </div> </div> <button type="button" onclick="test()" class="btn btn-primary pull-right"><i class="fa fa-copy"></i></button> </div> </div> <br> <div class="container"> <h2>Extra Information</h2> <div class="row"> <div class="col-6"> <div class="form-group row"> <label for="ship_method" class="col-5 col-form-label">Shipping Method</label> <div class="col-7"> <div class="input-group"> <input id="ship_method" name="ship_method" type="text" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-anchor"></i> </div> </div> </div> </div> </div> <div class="form-group row"> <label for="extra_shipping" class="col-5 col-form-label">Extra Shipping</label> <div class="col-7"> <div class="input-group"> <input id="extra_shipping" name="extra_shipping" type="text" class="form-control" aria-describedby="extra_shippingHelpBlock"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-money"></i> </div> </div> </div> <span id="extra_shippingHelpBlock" class="form-text text-muted">(Leave Blank For Free Shipping)</span> </div> </div> <div class="form-group row"> <label for="mage_order_number" class="col-5 col-form-label">Magento Order Number</label> <div class="col-7"> <div class="input-group"> <input id="mage_order_number" name="mage_order_number" type="text" class="form-control"> <div class="input-group-append"> <div class="input-group-text"> <i class="fa fa-bars"></i> </div> </div> </div> </div> </div> </div> </div> </div> <br><br> <div class="container"> <h2>Item Information</h2> <div class="row"> <div class="col-12"> <table id="myTable" class=" table order-list"> <thead> <tr> <td>SKU</td> <td>Quantity</td> <td>Price</td> </tr> </thead> <tbody> <tr> <td> <input type="text" name="sku" class="form-control" /> </td> <td> <input type="number" name="quantity" class="form-control" /> </td> <td> <input type="number" name="price" class="form-control" /> </td> <td> <a class="deleteRow"></a> </td> </tr> </tbody> <tfoot> <tr> <td colspan="5" style="text-align: left;"> <input type="button" class="btn btn-lg btn-block " id="addrow" value="Add Row" /> </td> </tr> <tr></tr> </tfoot> </table> <input type="submit" id="submitButton" name="submitButton" value="Submit"> </div> </div> </div> </form> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 引导,内联输入在动态添加时具有较小的间隙 - Bootstrap, inline inputs have smaller gap when added dynamically 使用JQuery访问AJAX添加的输入 - Accessing AJAX added inputs with JQuery 尝试对 Web 表单方法进行 Ajax 调用并收到内部服务器错误。 我已经尝试了几乎所有类似问题的解决方案 - Trying to make an Ajax call to a web form method and getting an internal server error. I have tried almost all solutions to similar questions Jquery 屏蔽输入\不适用于动态添加的输入 - Jquery Masked input \not working on dynamically added inputs jQuery .on(&#39;change&#39;)不适用于动态添加的文件输入 - jQuery .on('change') is not working for dynamically added file inputs jQuery自动完成功能,可为ajax调用动态创建输入 - jQuery autocomplete for dynamically created inputs for ajax call 检查所有表单字段是否都有输入jQuery - Check if all form fields have inputs jQuery Jquery如何检查所有输入是否有值 - Jquery how to check if all inputs have values or not 如何编辑动态添加的输入,而我的输入数据不会填充该数组中的其他输入? - How can I edit an input added dynamically, without my input data populating other inputs in that array? 动态添加的输入不会显示在$ _POST数据中 - Dynamically added inputs don't show up in $_POST data
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM