Es gibt keine spezielle Demo oder Beispielcode, die ich kenne, so hoffentlich diese Tipps helfen Ihnen damit den Einstieg ...
Es ist möglich und relativ einfach, AJAX-Anforderungen zu akzeptieren und produzieren JSON Antworten mit Kohana. Das erste, was sein bewusst ist, dass anders gesagt, es sei denn, wird Kohana immer versuchen, die Ansicht zu erzeugen, und dies wird als JSON-Antwort nicht so der Reihe nach:
if ($this->request->is_ajax()) {
// Disable any rendering of the template so it just returns json.
$this->auto_render = FALSE;
}
Sie wahrscheinlich zu wollen, werde setze dies in die before() -Methode, wahrscheinlich des übergeordneten Controllers, so dass es immer ausgeführt wird, bevor du Daten von der DB bekommst.
Meine persönliche Vorliebe für so etwas wäre, ein Standard-AJAX-Antwort-Array einzurichten, so dass die Daten immer in einem relativ standardisierten Format zurückgegeben werden. Beispiel:
// Standard ajax response array.
$this->ajax_response = array(
'success' => FALSE,
'error' => NULL,
'raw_data' => NULL,
'generated' => ''
);
Passen Sie die oben genannten, um Ihre erforderliche Nutzung anzupassen. Wahrscheinlich möchten Sie dies auch in Ihrer before() -Methode.
Jetzt in Ihren Aktionsmethoden, holen Sie sich die Daten aus der Datenbank und fügen Sie sie dem Array hinzu.
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.';
}
}
Sie sollten dann in der Lage sein, diese Daten zu verlangen, indem Sie eine URL wie http://www.website.com/controller/foobar/42
Das letzte Stück des Puzzles Aufruf tatsächlich diese Daten zurückkehrt, wie es im Moment Kohana, weil nicht ausgegeben alles Wir haben es nicht gesagt. In Ihrem nach() -Methode wie folgt vor:
if ($this->request->is_ajax()) {
$this->request->headers('Content-Type', 'application/json');
$this->response->body(json_encode($this->ajax_response));
}
Dann bist du frei, diese Antwort zu interpretieren aber Sie sehen, passen in die jQuery auf Ihrem Client-seitige Anwendung:
$.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);
}
});
Viel Glück mit dem Aufbau deiner App! Ich hoffe, dass das hilft, wenigstens zu beginnen.