Fetch不发送POST数据。

5

我遇到了一个问题,即使用fetch API无法将数据以POST方式发送到另一个PHP脚本。

我已经检查过其他解决方案并清理了我的代码,但它仍然无法工作。

也许我漏掉了什么。

这是我的代码:

function request(where, num, last, query){
 for (var i = num; i > 0; i--) {
  fetch("global/modul.php", {
   method: "POST",
   body: JSON.stringify({
    last: last,
    query: query
   }),
   headers:{
    'Content-Type': 'application/json'
   }
  }).then(function (response) {
   return response.text();
  }).then(function (data) {
   let html = data.trim();
   document.getElementById(where).innerHTML += html.trim();
  }).catch(function (error) {
   console.log('Request failed', error);
  });

  last = document.getElementById(where).lastChild.id;
 }
}

    var_dump($_POST);

输出:

数组(0) { }

我还测试了在Parse Javascript fetch in PHP中展示的解决方案,但它并没有解决问题。 我仍然无法在php脚本中获取POST数据。


你能在开发者控制台的网络选项卡中看到实际发送的内容吗? - solarc
@solarc 是的,最后一个空查询 top。 - Morplson
1个回答

15

你的JS代码没有问题。但是你需要在PHP代码中查找另一个变量中的数据,通过读取php://input来实现:

$_POST = json_decode(file_get_contents('php://input'), true);

来源:https://dev59.com/6GMk5IYBdhLWcg3w5R6k#39508364


这是为什么呢?这只是一个普通的POST请求,不是吗? - putvande
@putvande 这是一个真正的问题还是你在暗示 thibpat 改进他们的答案? :-) - zerkms
真诚的问题。我不明白为什么 var_dump($_POST) 不起作用。 - putvande
6
由于PHP只会自动解码 application/x-www-form-urlencoded 格式的内容,因此需要使用 @putvande。 - zerkms

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接