使用JS Fetch API的PHP POST

时间:2018-12-14 11:39:32

标签: javascript php fetch-api

我不知道为什么它不起作用。它返回空的$_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。

2 个答案:

答案 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

定义