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);
以上!