Oz-*_*rod 2 php ajax file-upload multiple-file-upload
我正在尝试通过 Ajax 将数据(输入文本、下拉列表等)和文件发送到 PHP 文件。我使用此函数添加名为Action 的额外参数。操作可以是以下一些文本:“添加”、“编辑”、“读取”和“删除”(增删改查选项)。请参阅下面的脚本:
\n\nfunction recordActions(action_name, id) {\n //id = (typeof id == "undefined") ? \'\' : id;\n\n var frm = document.getElementById(action_name + \'_form\');\n var form_data = new FormData();\n\n form_data.append(\'action\', action_name);\n form_data.append(\'fd\', frm);\n\n $.ajax({\n type: \'post\',\n dataType: \'json\',\n url: \'<?php echo FILENAME_USERS_ACTIONS; ?>\',\n data: form_data, \n cache: false,\n processData: false,\n contentType: false,\n success:\n if (data.action == \'add\' || data.action == \'edit\') {\n $("#" + action_name + \'_form\')[0].reset();\n $("#" + action_name + \'_div\').slideUp();\n }\n showWeekAgenda();\n\n } \n });\n\n // esta l\xc3\xadnea evita que la p\xc3\xa1gina se refresque dando a Cancelar la visita y evita que salga Error en Success de Arriba\n if (action_name == \'cancel\') return false; \n }\nRun Code Online (Sandbox Code Playgroud)\n\n当Ajax调用PHP文件()时,我不知道如何访问FormData中包含的数据。\n查看Web Developer中的参数,我明白了:
\n\n-----------------------------81668061412059330971865480216\nContent-Disposition: form-data; name="action"\n\nactadd\n-----------------------------81668061412059330971865480216\nContent-Disposition: form-data; name="fd"\n\n[object HTMLFormElement]\n-----------------------------81668061412059330971865480216--\nRun Code Online (Sandbox Code Playgroud)\n\n然后,我在 PHP 中添加了一些代码来查看参数及其值:
\n\nprint_r($_POST);\nprint_r($_FILES);\n\necho \'<br>Post: \' . $_POST[\'fd\'];\nRun Code Online (Sandbox Code Playgroud)\n\n但我没有什么可以帮助我的。
\n\nArray\n(\n [action] => actadd\n [fd] => [object HTMLFormElement]\n)\nArray\n(\n)\n<br>Post: [object HTMLFormElement]\nRun Code Online (Sandbox Code Playgroud)\n\n有人知道如何访问fd内部的任何值吗?fd 应该包含我的输入文本、下拉列表、文本区域等的值。
\n\n遵循这个问题的答案:Uploading both data and files in one form using Ajax? 我们可以将所有 HTML 控件放在一个 FormData 中。
\n\n提前致谢!
\n创建FormData对象时,您应该将表单传递给构造函数以使用表单值填充它。然后您可以将该action值附加到该结果中:
var frm = document.getElementById(action_name + '_form');
var form_data = new FormData(frm);
form_data.append('action', action_name);
Run Code Online (Sandbox Code Playgroud)
当您这样做时,您应该在 PHP 代码中看到$_POST并正确填充。$_FILES