Joomla 2.5网站任务不会开火

Here is my issue. I have a form that I want to send data to a JSON task. However no matter what I do the task will not run. I just get the following error:

Invalid controller: name='controls', format='json'

As far as I can see there is nothing that should prevent the controller from running. Here is the code.

class HelloWorldControllerControls extends JController{
    /*function __construct(){
        parent::__construct();
    }*/
    public function postal(){
        JFactory::getDocument()->setMimeEncoding( 'application/json' );
        JResponse::setHeader('Content-Disposition','attachment;filename="status.json"');
        //$postal = JRequest::getVar('postal_code',false);
        //$dispatcher = JDispatcher::getInstance();
        //$saveLocalCookie = $dispatcher->trigger('onSavePostalCode', array('code'=>$postal));
        echo json_encode(array('success'=>true));
        jexit();
    }
}

This is of course in the site controllers folder and named controls.json.php

I have matched this with another controller I am using in the admin panel that does pretty much the exact same thing, but it works in admin, not in the site.

The JRoute I am using to try to call this is.

index.php?option=com_helloworld&task=controls.postal&format=json

Anything I may be overlooking?

EDIT:

To clarify, I need to call the task directly, as all I will be doing is outputting raw data in JSON format, there is no need for a view, only a model an controller. Currently since I am still in testing there is no need for the model yet.

EDIT 2:

Found part of an answer, but am going to leave it open as this answer is not really that great. Its impossible based on how Joomla sets up MVC in the "site" portion (based on my tests). It always looks for view first, then controller. I could only get the task to fire by making sure a view was set. There is a chance I am wrong and misled from my tests because an open source framework not building MVC correctly seems illogical.

So in order to fix this you need to use a "view" as a "controller".

The controller file name should be controls.php

OR

maybe if the output is raw, name it controls.raw.php and add &format=raw at the end.

You need to decide whether to use the new mvc o the old. The new is much better for REST.

IF you extend JController as opposed to JControllerLegacy you are using the new MVC. YOu should use the REST routing and other things that go with that.

In new MVC there is a one task per controller design. e.g. Display (Get), Create (Post), Update, Delete and then you may need additional ones.

Postal does not make sense as a task since it is not a verb.