【FuelPHP】ajax送信データが$POSTの中に入ってないぞ!
最近アルバイトでFuelPHPのコードをいじっているですが、ajaxで送信したデータがサーバ側でうまく受信できない・・。
クライアント側では下記のようにajaxで送信です。
var post_data = { "hoge1_id": "hoge", "hoge2_id": "hogehoge", "hoge3_id": "hogehogehoge" }; $.ajax({ url: "/api/hogege.json", type: 'POST', cache: false, dataType: 'json', data: post_data, contentType: 'application/json' }).done(function(data) { alert('成功!'); }).fail(function() { alert('失敗・・'); });
<?php class Controller_Api extends Controller_Rest { protected $default_format = 'json'; public function post_hogege() { $hoge1 = Input::post('hoge1_id'); $hoge2 = Input::post('hoge2_id'); $hoge3 = Input::post('hoge3_id'); return $this->response("ok", 200); } }
FuelPHP側で、$_POSTの中に何も入ってなくてデータ受信できません!
原因はajaxの「contentType: 'application/json'」の記述・・。この記述がわるい!
この記述あると$POSTの中に値が入らなくてデータ取得できない!
↓
参考ブログ:
PHP で json の POST request の body を参照するには · Yuichi Takada
「contentType: 'application/json'」の記述はいらないので削除する!
これでサーバ側で「Input::post」でデータ受信できる!
あんましFuelPHPは関係ない問題かもしれないけど、めでたしめでたし、ちゃんとできた!
以上!