繁体   English   中英

JavaScript - POST 到 URL 不发送数据

[英]JavaScript - POST to URL not sending data

我正在尝试将 POST 数据从 Chrome 扩展程序发送到我控制的网站。 但是,在发送 POST 数据时,我没有收到任何数据。

我使用这个 function 发送它:

async function httpPost(url, data) {
    const response = await fetch(url, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(data)
    });
    return response.json();
}

它被这样称呼:

const post = await httpPost("https://example.com/api", extracted);

其中extracted包含类似于{entries: [], total: 0 }的内容。

我已经在httpPostresponsepost上尝试过console.log ,除了它们工作正常之外没有提供任何有用的东西。

在服务器端,为$_POST做一个isset确实有效。 请求正在发送并且正在被接收。 但是,做file_put_contents('test.txt', print_r($_POST)); 将文件留空。 它正在被访问,只是空的。

CORS 标头已设置:

header("Access-Control-Allow-Credentials: true");
header("Access-Control-Max-Age: 1000");
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Origin, Cache-Control, Pragma, Authorization, Accept, Accept-Encoding");
header("Access-Control-Allow-Methods: *");
header('Content-Type: application/json');

这个非常令人沮丧的问题是什么?

所需的 output:能够接收我使用httpPost发送的 POST 数据。

请参阅https://www.php.net/manual/en/function.print-r.php - 如果您想捕获print_r的字符串,您可以将其写入文件,例如字符串!需要设置return参数,如文档中所述。 现在,这可能只是将 post 变量打印回 AJAX 响应,而不是打印到文件中。

例如试试这个:

file_put_contents('test.txt', print_r($_POST, true));

编辑:

由于您实际上是在请求中发送 JSON ,因此以上都不是特别适用的。

类似于使用 PHP 接收 JSON POST 中的答案

您可以将 JSON 数据读入字符串,如下所示:

$json = file_get_contents('php://input');

现在,一般来说,要处理这个问题,您可以在其上运行json_decode()以将其转换为 PHP 变量(对象或数组,具体取决于确切的内容和您的偏好)。 但是如果你只是想把这些数据写入一个文件,你还不如直接写原始的 JSON,所以你可以简单地这样做:

file_put_contents('test.txt', $json);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM