A far better, more scalable way of doing it (That is actually built into
the framework):
*routes.php*
> Router::parseExtensions();
Router::setExtensions(array('json', 'xml'));
*AppController.php*
> 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/groups/opt_out.