XMLHttpRequestでPOSTしたデータが$_POSTで取得できない

こんばんは。きわさです。

こんな感じの普通?のコードを書き、php側で$_POST[‘data’]で取得しようとしたら、取得できず、何やらエラーまで。。

var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://xxxxxx.com/xxx.php', true);
xhr.onreadystatechange = function() {
    /* 省略 */
};
xhr.send('data=test');

エラーは、
「Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set ‘always_populate_raw_post_data’ to ‘-1’ in php.ini and use the php://input stream instead. in Unknown on line 0」
とかなんとか。

あれ、前まではできていたのに、とコードを確認したところ、
javascriptのコードに漏れがありました。

xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

これ、ですね。
これがないとContent-Typeはtext/plainのようで、$_POSTでは取得できないそうです。

まだまだ勉強が足りません。
気づいてよかったです。

スポンサーリンク