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.

Reply via email to