やりたかったこと
ネイティブ側のフォームからパスワードとメアドを入力してもらい、それをPHPへPOST送信、ちゃんと受け取れてるかPHP側で受け取ったPOSTをネイティブ側でリクエストの結果をレスポンスで受け取ってアラート表示させるというもの。
できねえ
ネイティブ側でこういう風に書いて
body: JSON.stringify({ password: value.password, username: value.username })
PHP側でこういう風に受け取っても空っぽ
$_POST['password']; $_POST['username'];
原因
見過ごしていた、ネイティブ側の送信側で、ヘッダーがこういう風になっていた。これじゃあできないわな。クライアント側では直接JSONを本文に投げてきていた。Content-Type:application/json で送信されると、key=valueが無いので当然ながら、$_POST変数が空っぽになります。
headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', },
解決
こんな感じですね。file_get_contents('php://input');の部分はコピペでいいよ。
<?php $json_string = file_get_contents('php://input'); echo $json_string; $obj = json_decode($json_string); $myObj->password = $obj['password']; $myObj->username = $obj['username']; $myJSON = json_encode($myObj); echo $myJSON;
勉強になる参考
多分、ここら辺を読めば、今書いてることは詳しくわかる