読者です 読者をやめる 読者になる 読者になる

FuelでAjaxを使う

php js

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については下記を確認
http://semooh.jp/jquery/api/ajax/jQuery.ajax/options/

サーバ

<?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();
	...
    }
}


JSONXMLなどの形式でデータを返したい場合は、RestControllerを使う。
fuel/app/classes/controllerディレクトリ内にクラスを作成し、Controller_Rest クラスを継承する。

リクエストURLの末尾によって、コントローラが返すデータが自動整形される。
例えば、/result/fetch.jsonの場合はJSONデータが返される。

RestControllerについては下記を確認
http://atmarkplant-dj.blogspot.jp/2012/10/fuel-php-ajax.html
http://blog.a-way-out.net/blog/2015/03/24/jquery-post-json-fuelphp/
http://qiita.com/kotarella1110/items/1c6c35d71c9175b0d264#rest-%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%81%A8%E3%81%AF