【问题标题】:AJAX - PHP save data repeatedAJAX - PHP 重复保存数据
【发布时间】:2016-05-26 17:13:20
【问题描述】:

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

<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 {

             }
        }
    });
});
});

当数据不重复(没有数组值)时,我没有问题,但在这种情况下会出现问题。谁能帮帮我?

【问题讨论】:

  • 尝试使用 jQuery 序列化表单,看看是否可行。
  • @Dharmavir 如何管理序列化数据?
  • 你已经得到了答案! :)

标签: php ajax


【解决方案1】:

试试这个 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 {

             }
        }
    });
});
});

请参考此答案以在数据库中添加多个文本框值:Adding multiple textbox entry to a mysql database

【讨论】:

  • 我做到了。但我不知道如何使用 php 文件中的数据。 Ajax 发布值如:myInput=something&myTextArea=otherthing&myInput=somethingelse&myTextArea=otherthingelse.... 我不知道如何区分值
【解决方案2】:

按照建议,使用

data: $(this).serialize()

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

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

这两个变量都是从表单中检索到的值数组。有关 PHP 数组的更多信息,请访问here

编辑:如果您需要 $myInputs 的值作为用逗号分隔的字符串(例如,“value1、value2、value3...”而不是带有“value1”的数组等),您可以在之后执行以下操作:

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

【讨论】:

  • 嗨,谢尔盖,感谢您的回答。我在输入名称中留下括号,但发布数据似乎不正确:myInput[]: value1, myTextArea[]: valueA, myInput[]: value2, myTextArea[]: valueB。我期望类似:myInput[value1, value2], myTextArea[valueA, ValueB]。你怎么看?
  • 这样不行。而且不知道你到底在追求什么,很难提出建议。我已经稍微修改了上面的答案,也许会有所帮助。
  • 我尝试在 php 文件中打印数据并且我的帖子数据是正确的。谢谢你!
猜你喜欢
  • 2013-10-02
  • 1970-01-01
  • 2023-03-26
  • 2013-04-27
  • 2021-08-16
  • 1970-01-01
  • 2013-02-19
  • 2014-02-14
  • 1970-01-01
相关资源
最近更新 更多