我试图获取通过fetch()发送的帖子请求的响应,但结果返回空文本。
JS:
async getTotalCompletionTimes()
{
var res = await fetch("repository/maps.php?method=getcompletiontimes&map="+this.getName(), {method: 'POST'});
const result = await res.text();
return result;
}
PHP
<?php
require_once("user.php");
if($_SERVER["REQUEST_METHOD"] == "POST")
{
<some code>
else if(isset($_POST["method"]) && $_POST["method"] == "getcompletiontimes" && isset($_POST["map"]))
{
$times = 0;
$users = glob('../users/*', GLOB_ONLYDIR);
foreach($users as $u)
{
if(!file_exists($u."/maps.json")) continue;
$json = json_decode(file_get_contents($u."/maps.json"), true);
foreach($json as $map => $v)
{
if($map == $_POST["map"])
{
$times += $v;
}
}
}
echo $times;
}
<some other code>
?>
我用cmd中的curl测试了php响应:curl -X POST localhost / game / repository / maps.php -d“ method = getcompletiontimes&map = map_1”,它返回“ 2”作为响应。
答案 0 :(得分:0)
对服务器的curl请求是内容类型为HTTP POST
的{{1}}请求,并且数据的传输类似于浏览器提交HTML表单的方式。
此请求数据包含application/x-www-form-urlencoded
和'method'
参数。
但是,在'map'
实现中,fetch
和'method'
参数作为URL查询参数发送。这样,它们在'map'
全局数组中不可用,而在$_POST
全局数组中不可用。
通过设置$_GET
初始化的body option,可以将'method'
和'map'
参数以与curl
类似的方式发送到服务器数据以包含包含两个参数的表单数据。
fetch