FuelでAjaxを使う
Ajaxでリクエストを投げて、FuelPHPのコントローラで処理する。
フロント
var res_json = $.ajax({ type : 'post', url : '/result/fetch.json', data : JSON.stringify(post_data), // POSTするJSONデータ contentType : 'application/json', dataType : 'json', processData : false, async : false, cache : false, scriptCharset : 'utf-8', // 成功 success: function(json_data) { return json_data; }, // 失敗 error: function() { }, // 完了時 complete: function() { } }).responseText; var res_obj = $.parseJSON(res_json); var result = res_obj.result;
戻り値を参照する場合は、$.ajax()の戻り値であるXMLHttpRequestオブジェクトを変換する必要がある。
responseTextメソッドで文字列に変換して、$.parseJSONでパースする運びとなる。
Ajaxについては下記を確認する。
jQuery.ajax(options) - jQuery 日本語リファレンス
サーバ
<?php /** * WebAPIとして機能する * */ class Controller_Result extends Controller_Rest { /** * /result/fetch.json * */ public function post_fetch() { $res = self::fetch_response(); return $this->response($res, 200); } private static function fetch_response() { // レスポンスを取得するための何かしら Input::json(); ... } }
REST形式でJSON/XMLデータを返したい場合は、RestControllerを使う。
fuel/app/classes/controllerディレクトリ内にクラスを作成し、Controller_Rest クラスを継承する。
リクエストURLの末尾によって、コントローラが返すデータが自動整形される。
例えば、/result/fetch.jsonの場合はJSONデータが返される。
RestControllerについては下記を確認する。
プロフェッショナルプログラマー: Fuel PHP で Ajax
jQueryでJSONをPOSTしてFuelPHPで受け取る — A Day in Serenity (Reloaded) — PHP, FuelPHP, Linux or something
FuelPHP の Rest コントローラの使い方とデフォルトフォーマットの変更の仕方 - Qiita