jQueryを利用してfuelphpのコントローラーにPOSTしたデータがNULLとなるのはなぜでしょう。
問題
Input::post()の中身がnullになる。
具体的に
jQueryを利用してfuelphpのコントローラーファイルにデータをPOSTメソッドで渡しました。
しかし、リクエスト先のコントローラーファイルで渡されたはずのデータを取得しようとInput::postメソッドを実行するも、得られた結果はnullでした。
以下が、それぞれのコードとなります。
1.javascript
$(function()
{
$('.bookmark').click(function()
{
var offer_id = '<?php echo $offer_id; ?>';
var button = this;
if($(this).attr('condition') == 'notbookmark')
{
$.ajax(
{
url: '<?php echo Uri::base();?>'+'bookmark/add.json',
type: 'POST',
contentType: 'application/json',
dataType: 'json',
data: {offer_id: offer_id},
success: function(data)
{
if (data.login_check == false)
{
$(button).attr('class', 'btn btn-warning btn-lg bookmark');
$(button).attr('condition', 'notbookmark');
$(button).text("ログインする必要があります");
$(button).prop('disabled', true);
}
...以下省略
2.APPPATH/controller/bookmark.php
<?php
class Controller_Bookmark extends Controller_Rest
{
public function post_add()
{
// ログインチェック
$auth = Auth::instance('simpleauth');
if ( ! $auth->check())
{
return $this->response(array(
'login_check' => false,
'register_check' => false,
));
}
$username = $auth->get('username');
$offer_id = Input::post('offer_id');
// ブックマーク数が0であるかチェック
if (Model_Bookmark::count_how_many_bookmarks($username, $offer_id) != 0)
{
return $this->response(array(
'login_check' => true,
'register_check' => false,
));
}
...以下省略
ブラウザのデベロッパーツールでヘッダーのリクエスト情報を確認したところ、POSTメソッドで「offer_id=5」のように、コントローラーにデータが送られているのが確認されました。
一方で、受け取り元のコントローラーで
var_dump(Input::post());
var_dump($_POST);
を実行したのですが、共に結果が
array (size=0)
empty
でした。
どのようにしたら、コントローラー側で正しくデータを受け取ることができるでしょうか。
よろしくお願い致します。