A far better, more scalable way of doing it (That is actually built into the framework):
On Tuesday, 21 January 2014 17:59:11 UTC+2, Rubensvsx wrote:
-- routes.php
AppController.php
Router::parseExtensions();
Router::setExtensions(array('json', 'xml'));
class AppController extends Controller {
public $components = array('RequestHandler');
}
Any controller action that you want to JSONify:
public function index() {
$this->set('myData', $myData);
$this->set('_serialize', 'myData');
}
Or, to match your original intentions, in AppController.php
class AppController extends Controller {
public $components = array('RequestHandler');
function beforeRender() {
$this->set('_serialize', array_keys($this->viewVars));
}
}
And then to make a request:
$.ajax({
url: "http://localhost/aplication/users ",
type: "POST",
dataType: "json" //or xml if you want xml data
});
On Tuesday, 21 January 2014 17:59:11 UTC+2, Rubensvsx wrote:
Sorry for the poor english.I created a piece of code that solved my problem in returning a JSON object and helped me not to re-write all views. I await your feedback pros and cons.class AppController extends Controller {
public $components = array('RequestHandler');function beforeRender() {
if ($this->RequestHandler->isAjax()) {
$this->layout = 'ajax';
$this->RequestHandler->setContent('json', 'application/json');
$this->viewVars = json_encode($this->viewVars);
return false;
}
}
}If an Ajax request is performed automatically be returns a JSON object with the query result.$.ajax({
url: "http://localhost/aplication/users ",
type: "POST",
dataType: "json"
});
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/groups/opt_out.
No comments:
Post a Comment