如何从 FormData 获取 PHP 中的数据和文件
How get data and files in PHP from FormData
我正在尝试通过 Ajax 将数据(输入文本、下拉列表等)和文件发送到 PHP 文件。我使用此函数添加名为 Action 的额外参数。操作可以是以下文本中的一些:"add"、"edit"、"read" 和 "delete"(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 Developer里面的Params,明白了:
-----------------------------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 应该有我的输入文本、下拉菜单、文本区域等的值。
根据这个问题的答案:Uploading both data and files in one form using 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 代码中。
我正在尝试通过 Ajax 将数据(输入文本、下拉列表等)和文件发送到 PHP 文件。我使用此函数添加名为 Action 的额外参数。操作可以是以下文本中的一些:"add"、"edit"、"read" 和 "delete"(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 Developer里面的Params,明白了:
-----------------------------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 应该有我的输入文本、下拉菜单、文本区域等的值。
根据这个问题的答案:Uploading both data and files in one form using 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 代码中。