当前位置: 首页 > 知识库问答 >
问题:

如何获取表单数据和表单。在ajax jquery上序列化数据参数

谷梁淇
2023-03-14

我有一个表单可以上传很多信息和一个文件多上传器,像这样:

<div class="col-md-4">
 <div class="form-group">
    <label class="control-label col-md-3">Location</label>
    <div class="col-md-9">
        <?php
        $location = array(
            "type" => "text",
            "name" => "location",
            "id" => "location",
            "class" => "form-control"
        );
        echo form_input($location);
        ?>
        <span class="help-block"></span>
    </div>
 </div>
</div>

<div class="col-md-12">
  <div class="form-group">
    <label class="control-label col-md-2">Warehouse</label>
    <div class="col-md-10">
        <?php
        foreach ($tipe as $v):
            echo "<label class='checkbox-inline'><input type='checkbox' name='tipe[]' value='$v->ID_CHECK_LIST'>$v->NAMA_CHECK_LIST</label>";
        endforeach;
        ?>
        <p class="help-block"></p>
    </div>
  </div>
</div>

<div class="col-md-12">
  <div class="form-group">
    <label class="control-label col-md-2">Image If Damage</label>
    <div class="col-md-4">
        <input type="file" multiple="" name="images[]">
        <p class="help-block"></p>
    </div>
  </div>

现在,我需要使用ajax发送它们。我试过$(表格)。序列化(),但$\u文件为空,因此我使用FormData类。但是FormData只处理文件,而不是另一个输入。如何设置aja参数中的数据以处理文件和其他输入。

这是ajax jquery

$('#form').submit(function () {            
        $('#btnSave').text('saving...'); //change button text
        $('#btnSave').attr('disabled', true); //set button disable

        var url;
        var formData = new FormData(this);

        if (save_method === 'add') {
            url = "<?php echo site_url('members/it/Request/ajax_add') ?>";
        } else {
            url = "<?php echo site_url('members/megumi/cek_list_wire_rod/ajax_update') ?>";
        }

        // ajax adding data to database

        $.ajax({
            url: url,
            type: "POST",
            data: formData,
                processData: false,
                contentType: false,
                $('#form').serialize(),
            dataType: "JSON",
            success: function (data)
            {

                if (data.status) //if success close modal and reload ajax table
                {
                    $('#modal_form').modal('hide');
                    reload_table();
                } else
                {
                    for (var i = 0; i < data.inputerror.length; i++)
                    {
                        $('[name="' + data.inputerror[i] + '"]').parent().parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class
                        $('[name="' + data.inputerror[i] + '"]').next().text(data.error_string[i]); //select span help-block class set text error string
                    }
                }
                $('#btnSave').text('Save'); //change button text
                $('#btnSave').attr('disabled', false); //set button enable
            },
            error: function (jqXHR, textStatus, errorThrown)
            {
                alert('Error adding / update data');
                $('#btnSave').text('save'); //change button text
                $('#btnSave').attr('disabled', false); //set button enable

            }
        });
        return false;
    });

任何帮助它如此赞赏。

共有1个答案

姚自强
2023-03-14

对于需要发送的所有数据,请使用FormData,因为PHP支持multipart/FormData以及application/x-www-form-urlencoded。您可以将key:value对添加到FormData,它们将显示为普通$\u POST变量,但您添加的文件将位于$\u文件中。

示例:

var fd = new FormData();
fd.append('file1', file1);
fd.append('file2', file2, 'newFile2Name.pdf');
fd.append('username', 'password');
fd.append('file_id', file_id);

$.ajax({
    url: url,
    type: "POST",
    data: fd,
    processData: false,
    contentType: false,
    success: function(response) {},
    error: function(xhr, textStatus, errorThrown) {},
    complete: function() {}
});

请注意,没有dataType属性。您的$('#form')。序列化()随机代码需要删除,因为它是无效的语法(您不能将表达式放在对象文字表达式中)。

在PHP中:

<?php

$_FILES['file1']['name'] === 'file1.pdf';
$_FILES['file2']['name'] === 'newFile2Name.pdf';

$_POST['username'] === "password"
$_POST['file_id'] === "4"

?>

 类似资料:
  • 问题内容: 我需要从表单获取数据。 我使用JavaScript创建表单: 那么我需要从输入字段中获取数据。 这是我的视图函数: 但我得到一个错误: 帮我从表格中获取数据。 问题答案: 从Flask的请求对象获取表单数据: 你还可以设置默认值以避免400错误,如下所示:

  • 问题内容: 我的函数中有一个简单的表单,如下所示: 我应该在访问和字段中写些什么? 问题答案: 使用输入上的事件来更新组件的状态并在以下位置访问它: 工作提琴。 另外,阅读文档,有一整节专门讨论表单处理:表单 以前,您还可以使用React的双向数据绑定帮助器mixin来实现相同的功能,但是现在不建议使用它来设置值和更改处理程序(如上所述): 文档在这里:双向绑定帮助器。

  • 问题内容: 是否有一种简单的单行方式来获取表单数据,就像以经典的纯HTML方式提交那样? 例如: 输出: 这样的事情太简单了,因为它不(正确地)不包含文本区域,选择,单选按钮和复选框: 问题答案: $(‘form’).serialize() //this produces: “foo=1&bar=xxx&this=hi”

  • 像这样的形式: 我如何使用perl6自动获取表单数据?lkie this: 结果是这样的: perl6中有shome模块吗?请

  • 下面的代码是一个HTML表单,我想要做的是从该表单中获取输入,将其保存到会话存储,并能够跨页传输。 我知道通常如何这样做,但特别是对于HTML表单,这对我不起作用。 因此,如果一个用户在Conor中输入一个用户名,我希望该用户名保存到会话存储中,这样我就可以获得该用户名并在另一个页面上使用它 当我尝试从会话存储获取该输入时,它当前没有获取该输入,并且它什么也不做。 所以如果有人能向我解释一下我在获

  • 我想在Backbone.js模型中对表单进行一些服务器前验证。要做到这一点,我需要将用户输入从表单转换为可用的数据。我找到了三种方法来做到这一点: 不幸的是,没有一个提供我所需要的好的可扩展和可开发的JSON对象。我已经查看了几个关于Stack ;溢出的问题,但我只发现了一些额外的库。 underscore.js、当前的jQuery或backbone.js是否提供了一个helper方法? 产出 b

  • 我需要从表单中获取数据。 我使用JavaScript创建表单: 然后我需要从输入字段获取数据,其中。 这里是我的视图功能: 但是我得到一个错误: 帮助我从表单中获取数据。

  • Framework7 有一些方法可以让读取和填写表单数据变得非常方便: Form 转化成 JSON 使用 app 对应的方法可以非常方便把所有的表单元素转化成一个 JSON 对象: myApp.formToJSON(form) - 把表单转换成JSON对象 form - HTML元素 or 字符串 (CSS选择器) 返回一个JSON对象 <form id="my-form" class="list