web-dev-qa-db-ja.com

PHPのfetch()APIを使用してデータを取得する方法POSTメソッド?

PHPでPOSTデータを取得するためにfetch() AP​​I POSTメソッドを使用しようとしています。

これが私が試したものです:

var x = "hello";
fetch(url,{method:'post',body:x}).then(function(response){
    return response.json();
});

PHP:

<?php
if(isset($_GET['x']))
{
    $get = $_GET['x'];
    echo $get;
}
?>

これは正しいです?

10
trupti

場合によります:

あなたがしたい場合は $_GET['x']、クエリ文字列でデータを送信する必要があります:

var url = '/your/url?x=hello';

fetch(url)
.then(function (response) {
  return response.text();
})
.then(function (body) {
  console.log(body);
});

あなたがしたい場合は $_POST['x']FormDataとしてデータを送信する必要があります:

var url = '/your/url';
var formData = new FormData();
formData.append('x', 'hello');

fetch(url, { method: 'POST', body: formData })
.then(function (response) {
  return response.text();
})
.then(function (body) {
  console.log(body);
});
16
Salva

どうやら、Fetch APIを使用してPHPサーバーにデータを送信する場合、以前とは少し異なるリクエストを処理する必要があります。

この入力がmultipart-data formまたはapplication/x-www-form-urlencoded

特別なfile:_php://input_を読み取ることでデータを取得できます。たとえば、file_get_contents('php://input')を使用して、その入力をjson_decode()

うまくいけば、それが役立ちます。

あなたはそれについてここでもっと読むことができます:

https://codepen.io/dericksozo/post/fetch-api-json-php

14
Rafael Mejía

使用する $_POSTポスト変数を取得します。

$x = $_POST['x'];

undefined変数のフォールバックを追加することもお勧めします。

$x = isset($_POST['x']) ? $_POST['x'] : 'default value';
0
Robert Shenton