Maison  >  Questions et réponses  >  le corps du texte

Définissez la variable $_POST sur vide tout en utilisant php://input pour que tout soit correct

J'ai créé une application React à partir de laquelle j'appelle un serveur construit sur PHP.

Voici comment j'appelle le fichier PHP :

const requestOptions = {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: JSON.stringify({ name, username, password }),
};
console.log(requestOptions);

fetch('http://localhost/crud/requests/signup.php', requestOptions)
  .then(res => res.json())
  .then(data => console.log(data));

Voici ce que j'ai dans le fichier PHP :

if (isset($_POST) && !empty($_POST)) {
  // do something
}

Quand j'imprime $_POST 变量时,我得到一个空数组。甚至 $_RESPONSE, il est également vide.

Mais quand j'essaie d'imprimer le flux d'entrée comme ceci :

print_r(file_get_contents('php://input'));

Tout semble bien. Quelqu'un peut-il expliquer pourquoi cela se produit ? J'ai essayé de le lire dans la documentation et de rechercher des forums et des blogs, mais je n'ai pas été satisfait des réponses.

P粉032649413P粉032649413229 Il y a quelques jours327

répondre à tous(1)je répondrai

  • P粉718165540

    P粉7181655402024-03-28 13:41:16

    La prise en charge des formulaires intégrée de PHP ne peut analyser que application/x-www-form-urlencoded 表单和 multipart/form-data 表单。您实际发送的是一个 JSON 序列化对象,其 MIME 类型为 application/x-www-form-urlencoded.

    Pour en fait envoyerapplication/x-www-form-urlencoded表单,请使用URLSearchParams 而不是 JSON.stringify :

    fetch('http://localhost/crud/requests/signup.php', {
      method: 'POST',
      body: new URLSearchParams({ name, username, password }),
    })
    .then(res => res.json())
    .then(data => console.log(data));
    

    Dans ce cas, il n'est pas nécessaire de définir explicitement l'objet Content-Type浏览器会自动执行此操作。要发送 multipart/form-data 负载(如果您想上传较大的文件,您可能需要这样做),请使用 FormData.

    Si vous souhaitez finalement envoyer du JSON, vous devez l'envoyer en utilisant le type MIME correct dans l'en-tête, application/json。在 PHP 方面,您将不得不使用 json_decode.

    répondre
    0
  • Annulerrépondre