【发布时间】:2021-06-18 15:39:23
【问题描述】:
我看过几篇关于这个问题的帖子,但都没有解决我的问题。我正在使用 XAMPP,我在同一个文件夹中有一个 html index.html 和一个 php remote.php。
我要发送到 php 的 formData 是使用 javascript 中的表单 (basic_form) 创建的。结果构造得很好,因为console.log(...formData); 打印了Array [ "mode", "basic" ], Array [ "file", File ],这是字符串和输入文件。
但不幸的是,在 php 中,命令 print_r($_POST); 仅输出 Array(),并且命令 var_dump($_POST); 输出 array(0){}。所以看起来表单的内容并没有传递给php。
这里是html表单:
<body>
<div>
<form name="basic_form" enctype="multipart/form-data" action="remote.php" method="post">
<input type="text" id="mode" name="mode" value="basic"/>
<input type="file" id="file" name="file"/>
<input type="submit" id="submit_basic_input" name="submit_basic_input" value="Submit"/>
</form>
</div>
</body>
这里是提交表单的javascript:
<script>
var basic_form = document.forms["basic_form"];
basic_form.addEventListener('submit', e => {
e.preventDefault();
const url = 'remote.php';
const formData = new FormData(basic_form);
fetch(url, {
method: 'POST',
body: formData
}).then(response => {
console.log(response);
if(response["status"] == 200)
location.replace(response["url"]);
});
});
</script>
这里是打印表单内容的php:
<?php
var_dump($_POST);
$datapost = $_POST;
print_r($datapost);
print($datapost["mode"]);
?>
【问题讨论】:
标签: javascript php arrays forms post