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の$_POST
はkey1=val1&key2=val2
のようなデータしか取得できません。
Date: 2015/03/24