cakePHP: ajaxでのデータ取得。

ajaxを使います。

/user/index で、Userと紐付くStudentをajaxを使って取得する。
データの取得は、/user/ajax_get_students/ から行うと仮定。

・/user/index.ctp
下のようなプルダウンでユーザを選択する。


ajaxリクエスト関数を用意。
戻ってきたdata展開の処理は省きます。

$("#userselect").change(){
	var userid = $(this).val();
    $.ajax({
		type:"POST",
        url: "Html->url(array('controller' => 'user', 'action' => 'ajax_get_students')); ?>",
	    data: { 
	        'user_id': userid, 
	    },
		success:function(data){
			console.log(data);
		},
		error :function(XMLHttpRequest,textStatus){
			console.log(textStatus);
		}
    });
}

コントローラ。
・UsersController

class ・UsersController extends AppController {

public $components = array('RequestHandler');

public function ajax_get_students($id = null) {
	if($this->RequestHandler->isAjax()){
		$user_id = (isset($_POST['user_id']))? h($_POST['user_id']) : "";

		// get student info.
		$students = $this->Student->find('all', array(
	        'conditions' => array('Student.user_id =' => $user_id ),
	    ));

	    // viewにはjson形式のファイルを表示させるように。
		$this->layout = 'ajax';
		$this->RequestHandler->setContent('json');
	    $this->RequestHandler->respondAs('application/json; charset=UTF-8');

	    // $studentsの配列をviewに渡す。
	    $this->set('students', $students);	
	}
}

}

ビュー。
・ajax_get_students.ctp

echo json_encode($statuses);

以上!