For those who don't know, a PHP function can "return" data to an Ajax call by echoing the data out. So, for example, given this Ajax call:
$.ajax({
type: "POST",
url: 'http://www.domainname.com/module/controller/insert',
data: { name: 'Donna Oberes', address: 'The Universe' }
}).done(function(msg) {});
And given a function that inserts data into the database, returning/echoing data would look like:
public function insert($name, $address)
{
$new_id =
$this->people_model->insert(array('name' => $name, 'address' => $address));
// Return the ID by echoing
echo $new_id;
}
The calling Ajax function will 'catch' $new_id with the variable msg and do whatever it wants with it.
But how about if I need more than just the new_id? Say, for example, I need the new id and a nicely formatted date of when this new id was created. I have to return these through an array, but the key is to return the array json_encoded. So I should do this:
public function insert($name, $address)
{
$new_id =
$this->people_model->insert(array('name' => $name, 'address' => $address));
$data = array('id' => $id, 'date' => 'April 6, 2013');
echo json_encode($data).
}
And then in the ajax call that catches the printout, msg will catch the array, but the array has to go through $.parseJSON so that it's usable as a JavaScript array.
$.ajax({
type: "POST",
url: 'http://domainname.com/module/controller/insert',
data: { name: 'Donna Oberes', address: 'The Universe' }
}).done(function(msg) {
var obj = $.parseJSON(msg);
// Print out
$('#student_list').append("New student ID " + obj.id + " added on " + obj.date);
});
No comments:
Post a Comment