首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我需要提交通过使用ajax附加功能添加额外的字段

我需要提交通过使用ajax附加功能添加额外的字段
EN

Stack Overflow用户
提问于 2019-01-30 23:41:04
回答 2查看 886关注 0票数 0

我遇到了一个关于使用ajax提交附加字段的障碍。

这是对我的问题的描述。

我的HTML表单是

代码语言:javascript
代码运行次数:0
运行
复制
<div id="append-fields">
    <input name="firstName[]" id="firstName" value="john"></input>
    <input name="lastName[]" id="lastName" value="Doe"></input>
</div>
<button onclick="appendFunction()" type="button">Add a new row</button>

单击按钮add a new row后,我会看到两个类似下面这样的字段

代码语言:javascript
代码运行次数:0
运行
复制
    <div id="append-fields">
      <input name="firstName[]" id="firstName" value="anna"></input>
      <input name="lastName[]" id="lastName" value="Kondo"></input>
    </div>

现在,我需要使用ajax提交以下数据

代码语言:javascript
代码运行次数:0
运行
复制
        firstName = 'john',lastName = 'Doe'
        firstName = 'anna',lastName = 'kondo'

但我只得到了一组这样的数据

代码语言:javascript
代码运行次数:0
运行
复制
     firstName = 'john',lastName = 'Doe'

下面是myscript

代码语言:javascript
代码运行次数:0
运行
复制
        <script>
        insert = [];
        insert[0] = $("#firstName").val();
        insert[1] = $("#lastName").val();
        $.ajax({
            url: 'myUrl',
            method: 'POST',
            data: {take:insert},
            error: function () {
            },
            success: function (response) {
                $('#overlay').addClass("hidden");
                jQuery('#body').html(response);
            }
        });
   </script>

这是我的PHP

代码语言:javascript
代码运行次数:0
运行
复制
      function myUrl(){
         $data = $_POST["take"];
       }

错误在哪里?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-31 00:18:33

您可以使用formdata

代码语言:javascript
代码运行次数:0
运行
复制
    var data = new FormData($('form')[0]);
    data .append('extra', add_data);

或者按类序列化或seriallizeArray,我会断定

代码语言:javascript
代码运行次数:0
运行
复制
var form_data = $('.post_these').serialize();

PS: post_these是输入字段类

在PHP中按名称访问

代码语言:javascript
代码运行次数:0
运行
复制
$firstName = $_POST['firstName'];

或者当数据是数组时,创建一个对象

代码语言:javascript
代码运行次数:0
运行
复制
$data= (object) $_POST['data'];
$data-YfirstName; // use this way    

PS使用这个来调试,在你的控制器中检查你收到的东西

代码语言:javascript
代码运行次数:0
运行
复制
echo '<pre>';
print_r($_POST);
echo '</pre>';
exit();
票数 0
EN

Stack Overflow用户

发布于 2019-01-30 23:45:50

您不应该通过ID获取数据值,因为不可能有多个相同的ID元素。

由于您使用的是jquery,因此使用$('form').serialize()$('form').serializeArray()作为数组输出,以获取所有表单输入及其值。但是,在执行此操作之前,您必须将这些输入包装在一个表单元素中。

或者像上面建议的那样,手动遍历元素并获得类似这样的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54444282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档