Saya mencipta apl React yang daripadanya saya memanggil pelayan yang dibina pada PHP.
Begini cara saya memanggil fail 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));
Ini yang saya ada dalam fail PHP:
if (isset($_POST) && !empty($_POST)) { // do something }
Bila saya print $_POST
变量时,我得到一个空数组。甚至 $_RESPONSE
ia juga kosong.
Tetapi apabila saya cuba mencetak aliran input seperti ini:
print_r(file_get_contents('php://input'));
Semuanya nampak baik. Bolehkah sesiapa menjelaskan mengapa ini berlaku? Saya cuba membacanya dalam dokumentasi dan mencari beberapa forum dan blog, tetapi tidak berpuas hati dengan jawapannya.
Sokongan borang terbina dalam PHP hanya boleh menghuraikan
application/x-www-form-urlencoded
表单和multipart/form-data
表单。您实际发送的是一个 JSON 序列化对象,其 MIME 类型为application/x-www-form-urlencoded
.Kepada sebenarnya hantar
application/x-www-form-urlencoded
表单,请使用URLSearchParams
而不是JSON.stringify
:Dalam kes ini, tidak perlu menetapkan objek
Content-Type
:浏览器会自动执行此操作。要发送multipart/form-data
负载(如果您想上传较大的文件,您可能需要这样做),请使用FormData
secara eksplisit.Jika anda akhirnya mahu menghantar JSON, anda harus menghantarnya menggunakan jenis MIME yang betul dalam pengepala,
application/json
。在 PHP 方面,您将不得不使用json_decode
手动解析有效负载>.