AJAX - PHP 保存数据重复


AJAX - PHP save data repeated

我有一个重复数据的表单:

<form action="" method="post" id="myForm">
  <?php foreach ($array as $value) { ?>
    <input type="text" name="myInput[]" id="myInput" value="<?php $value->data1 ?>"/>
    <textarea name="myTextArea[]" id="myTextArea"><?php $value->data2 ?></textarea>
  <?php } ?>
<a href="#" id="submit">save</a>
</form>

我尝试使用此脚本使用 ajax 保存值:

 jQuery(function(){
  jQuery("#submit").click(function(e){
    e.preventDefault();
    var formData = {
        'myInput'     : jQuery('input[name=myInput]').val(),
        'myTextArea'  : jQuery("textarea#myTextArea").val()
    };
    jQuery.ajax({
        url     : 'someUrl', 
        type    : 'POST', 
        data    : formData,
        dataType: 'json', 
        encode  : true,
        success: function(response){
             if (response.success==true) {
             }
             else {
             }
        }
    });
});
});

当数据不重复(没有数组值(时,我没有问题,但在这种情况下出了点问题。有人可以帮助我吗?

按照建议,使用

data: $(this).serialize()

在你的 jQuery 提交函数中。将输入名称中的方括号保留不变。在您的 PHP 中,您将能够像这样访问您的数据:

$myInputs = $_POST['myInput'];
$myTextAreas = $_POST['myTextArea'];

这两个变量都将是从表单中检索的值数组。有关 PHP 数组的更多信息,请参阅此处。

编辑:如果您需要$myInputs的值作为逗号分隔的字符串(例如,"value1,value2,value3..."而不是带有"value1"等的数组(,您可以立即执行以下操作:

$myInputs = implode(', ', $myInputs); // this will convert the array to a string

试试这个jQuery代码:

jQuery(function(){
  jQuery("#submit").click(function(e){
    e.preventDefault();
    var formData = $("#myForm").serialize();
    jQuery.ajax({
        url     : 'someUrl', 
        type    : 'POST', 
        data    : formData,
        dataType: 'json', 
        encode  : true,
        success: function(response){
             if (response.success==true) {
             }
             else {
             }
        }
    });
});
});

请参考这个答案在数据库中添加多个文本框值:向mysql数据库添加多个文本框条目