如何从FormData获取PHP中的数据和文件



我正在尝试通过Ajax将数据(输入文本,下拉列表等)和文件发送到PHP文件。我使用此函数添加名为 Action 的额外参数。操作可以是其中一些文本:"添加","编辑","读取"和"删除"(crud选项)。请参阅下面的脚本:

function recordActions(action_name, id) {
  //id = (typeof id == "undefined") ? '' : id;
  var frm = document.getElementById(action_name + '_form');
  var form_data = new FormData();
  form_data.append('action', action_name);
  form_data.append('fd', frm);
  $.ajax({
          type: 'post',
          dataType: 'json',
          url: '<?php echo FILENAME_USERS_ACTIONS; ?>',
          data: form_data, 
          cache: false,
          processData: false,
          contentType: false,
          success:
            if (data.action == 'add' || data.action == 'edit') {
                $("#" + action_name + '_form')[0].reset();
                $("#" + action_name + '_div').slideUp();
            }
            showWeekAgenda();
            }          
      });
      // esta línea evita que la página se refresque dando a Cancelar la visita y evita que salga Error en Success de Arriba
      if (action_name == 'cancel') return false; 
    }

当Ajax调用PHP文件()时,我不知道如何访问FormData中包含的数据。看到 Web 开发人员中的参数,我明白了:

-----------------------------81668061412059330971865480216
Content-Disposition: form-data; name="action"
actadd
-----------------------------81668061412059330971865480216
Content-Disposition: form-data; name="fd"
[object HTMLFormElement]
-----------------------------81668061412059330971865480216--

然后,我在PHP中放置了一些代码来查看参数及其值:

print_r($_POST);
print_r($_FILES);
echo '<br>Post: ' . $_POST['fd'];

但我没有什么可以帮助我。

Array
(
    [action] => actadd
    [fd] => [object HTMLFormElement]
)
Array
(
)
<br>Post: [object HTMLFormElement]

有谁知道如何访问 fd 内部的任何值? fd 应该具有我的输入文本、下拉列表、文本区域等的值。

按照这个问题的答案:使用 Ajax 在一个表单中上传数据和文件?我们可以将所有 HTML 控件放在一个 FormData 中。

提前感谢!

创建 FormData 对象时,应将窗体传递给构造函数,以使其填充窗体值。然后,您可以将action值追加到该结果中:

var frm = document.getElementById(action_name + '_form');
var form_data = new FormData(frm);
form_data.append('action', action_name);

当你这样做时,你应该看到$_POST$_FILES在你的PHP代码中正确填充。

最新更新