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.
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 envoyer
application/x-www-form-urlencoded
表单,请使用URLSearchParams
而不是JSON.stringify
: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
手动解析有效负载>.