Thanks for the reply. It returns json fine, but i am looking at just the view
script being returned, not the layout. It seems like the AjaxContext is not
disabling the layout?


asagala wrote:
> 
> Maybe this is totally off topic but I know when I want to return JSON data
> from one of my controller actions I use the json helper. You use it like
> this $this->_helper->json($data); where $data is an array of data that you
> want to send by JSON. NIce thing is that is also disables the view. No
> need to call anything else. 
> 
> 
> tony stamp wrote:
>> 
>> I'm not sure that's right - i thought the AjaxContext would handle that,
>> and besides, that means i'd have to place conditionals inside each action
>> to see if the request came from an XHR - if so, disable rendering, if
>> not, carry on as normal. Isn't AjaxContext supposed to be transparent?
>> 
>> 
>> 
>> Daniel Latter-2 wrote:
>>> 
>>> You need to call setNoRender(true) of the viewRenderer helper inside  
>>> your action.
>>> 
>>> 
>>> On 1 Nov 2009, at 13:13, tony stamp <[email protected]> wrote:
>>> 
>>>>
>>>> I have been having some trouble obtaining the html view rendered by  
>>>> an action
>>>> from an AJAX request. Initially, in my ajax-ed controller action, i  
>>>> was
>>>> checking if the request was XmlHttpRequest, and if so, disabling the  
>>>> layout
>>>> so just the portion of the view is returned. This was not working,  
>>>> so a
>>>> little research found pointers towards the AjaxContext helper. I  
>>>> have set it
>>>> up as follows:
>>>>
>>>> Controller:
>>>> public function init(){
>>>>            parent::init();
>>>>            $this->flashMessenger = $this->getHelper('FlashMessenger');
>>>>
>>>>            $ajaxContext = $this->_helper->getHelper('AjaxContext');
>>>>            $ajaxContext->addActionContext('view', 'html')
>>>>                        ->initContext();
>>>>        }
>>>>
>>>> public function viewAction(){
>>>>            if(!($id = $this->getRequest()->getParam('newsID'))){
>>>>                $this->_redirect('index');
>>>>            }
>>>>
>>>>            $newsTable = new News_Table();
>>>>            $select = $newsTable->select();
>>>>            $select->setIntegrityCheck(false);
>>>>            $select->from('news')->joinLeft('news_approved',
>>>>                                             'news.id =  
>>>> news_approved.news_id',
>>>>                                             array('approver_id' =>  
>>>> 'staff_id', 'date_approved'));
>>>>            $select->where('id = ?',(int) $id);
>>>>
>>>>            $rowset = $newsTable->fetchAll($select);
>>>>            $this->view->assign('news', $rowset->current());
>>>>        }
>>>>
>>>> The view script rendered for this is called view.phtml, so as per the
>>>> documentation, i copied the content and named a new view script
>>>> view.ajax.phtml.
>>>>
>>>> Although the correct action is being called (from jquery, with  
>>>> format=html
>>>> appended to the query string, although it would be nice to assume  
>>>> that no
>>>> format parameter = html by default, unless this can be set  
>>>> somewhere?) and
>>>> loading the correct ajax view script, it is not disabling the  
>>>> layout, and i
>>>> am getting a "page within a page".
>>>>
>>>> Any pointers on what i'm doing wrong?
>>>> -- 
>>>> View this message in context:
>>>> http://old.nabble.com/Returning-HTML-content-from-AjaxContext-tp26148891p26148891.html
>>>> Sent from the Zend Framework mailing list archive at Nabble.com.
>>>>
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/Returning-HTML-content-from-AjaxContext-tp26148891p26157763.html
Sent from the Zend Framework mailing list archive at Nabble.com.

Reply via email to