我不知道为什么它不起作用。它返回空的$_POST
。
JS:
const updateRequest = new FormData();
updateRequest.append('updateRequest', 'next-period');
fetch('file.php', {
method: 'POST',
data: updateRequest
})
.then((response) => response.text())
.then((text) => {
console.log(text);
})
PHP:
<?php
if($_SERVER['REQUEST_METHOD'] === 'POST') {
var_dump(empty($_POST));
}
在PHP文件中,服务器请求为POST,但var_dump记录为true。
答案 0 :(得分:3)
根据documentation,如果要向请求正文中的服务器发送数据(就像POST一样),则将其放在body
选项中。没有data
选项可用。如果将其提供给Fetch方法,则不会期望它,而只会忽略它。也许您已经将它与jQuery $ .ajax()的语法(确实有data
选项)混淆了?
您需要写:
fetch('file.php', {
method: 'POST',
body: updateRequest //"body" instead of "data"
})
演示(运行小提琴时,请观看“网络”选项卡以查看正文中包含的数据):http://jsfiddle.net/2vx0rp3q/
答案 1 :(得分:-1)
更改正文中的数据
var form = new FormData(document.getElementById('login-form'));
fetch("/login", {
method: "POST",
body: form
});
此处https://developer.mozilla.org/it/docs/Web/API/Fetch_API/Using_Fetch
定义