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.
