jQueryでJSONをPOSTしてFuelPHPで受け取る

JSONでデータをPOST

jQueryでJSON形式でデータをPOSTして、結果もJSONで返るという場合です。

Ajax通信のJavaScriptは以下のようになります。

    var data = {
        name: "はじめてのフレームワークとしてのFuelPHP"
    };

    $.ajax({
        type : 'post',                      // HTTPメソッド
        url  : '/json/post.json',           // POSTするURL
        data: JSON.stringify(data),         // POSTするJSONデータ
        contentType: 'application/json',    // リクエストのContent-Type
        dataType: 'json',                   // レスポンスのデータ型
        success: function(json_data) {      // 成功時の処理
            return;
        },
        error: function() {                 // HTTPエラー時の処理
            alert('Server Error. Please try again later.');
        },
        complete: function() {              // 完了時の処理
        }
    });

この場合、以下のようなリクエストが送信されます(ヘッダは一部のみ記載)。

Content-Type: application/json; charset=UTF-8
X-Requested-With: XMLHttpRequest

{"name":"はじめてのフレームワークとしてのFuelPHP"}

FuelPHPでこの値を取得するには、Input::json('name')を使います。

普通にPOST

JSONではなく普通にkey1=val1&key2=val2の形式でPOSTする場合は、以下のようになります。

    var data = {
        name: "はじめてのフレームワークとしてのFuelPHP"
    };

    $.ajax({
        type : 'post',                      // HTTPメソッド
        url  : '/json/post.json',           // POSTするURL
        data: data,                         // POSTするデータ
        dataType: 'json',                   // レスポンスのデータ型
        success: function(json_data) {      // 成功時の処理
            return;
        },
        error: function() {                 // HTTPエラー時の処理
            alert('Server Error. Please try again later.');
        },
        complete: function() {              // 完了時の処理
        }
    });

この場合、以下のようなリクエストが送信されます(ヘッダは一部のみ記載)。

Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest

name=%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AE%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%A8%E3%81%97%E3%81%A6%E3%81%AEFuelPHP

FuelPHPでこの値を取得するには、普通にPOSTされた場合と同じくInput::post('name')を使います。

なお、この違いは、PHPに基づくものです。PHPの$_POSTkey1=val1&key2=val2のようなデータしか取得できません。

Date: 2015/03/24

Tags: jquery, ajax, fuelphp