それは、AJAX要求を受け入れ、生産するために、比較的容易に可能であり、そこ私の知っている具体的なデモやサンプルコードがありませんので、うまくいけば、これらのヒントは、あなたがそれを始めるのに役立ちます...
KohanaのJSON応答
if ($this->request->is_ajax()) {
// Disable any rendering of the template so it just returns json.
$this->auto_render = FALSE;
}
あなたはおそらくしたいと思う:注意すべき最初の事は最初にそう最初の事そう言われない限り、Kohanaのは常にビューを生成しようとすると、これはJSONレスポンスとして失敗するということですおそらく親Controllerのbefore()メソッドに入れて、DBからデータを取得する前に必ず実行してください。
私の個人的な好みは、データが常に比較的標準的な形式で返されるように標準のAJAX応答配列を設定することです。例:
// Standard ajax response array.
$this->ajax_response = array(
'success' => FALSE,
'error' => NULL,
'raw_data' => NULL,
'generated' => ''
);
必要に応じて上記をカスタマイズしてください。 before()メソッドでこれも必要になるでしょう。
アクションメソッドでは、DBからデータを取得し、配列に追加します。あなたはその後、現時点ではKohanaのが原因で何も出力しませんよう、パズルの最後のピースは、実際に、このデータを返すようにhttp://www.website.com/controller/foobar/42
としてURLを呼び出すことによって、このデータを要求することができるはず
public function action_foobar() {
// Get the primary key ID from the URL.
$var1 = $this->request->param('var1');
$data = ORM::factory('Model', $var1);
if ($data->loaded()) {
$this->ajax_response['success'] = TRUE;
$this->ajax_response['raw_data'] = $data;
} else {
$this->ajax_response['error'] = 'Data could not be found.';
}
}
私たちはそうしないように言いました。あなたの後の()メソッドでは、次の操作を行います。そして、あなたはその応答を解釈するのは自由ですが、あなたのクライアント側のアプリケーションではjQueryに合う
if ($this->request->is_ajax()) {
$this->request->headers('Content-Type', 'application/json');
$this->response->body(json_encode($this->ajax_response));
}
を:
$.ajax({
type: "POST",
url: "http://www.website.com/controller/foobar/" + foobarId,
dataType: 'json',
success: function (data) {
if (!data.success) {
alert(data.error);
} else {
// Handle the returned data.
}
},
error: function (xhr, status, errorThrown) {
// Something went very wrong (response failed completely).
alert(errorThrown);
}
});
幸運あなたのアプリケーションを構築すると!私はこれが少なくともあなたを始めさせるのに役立つことを願っています。