Keep in mind that the AjaxContext helper needs two conditions to be satisfied in order for it to kick in:
1. The header "X_REQUESTED_WITH" must be "XMLHttpRequest" (automatic with Prototype and jQuery) and 2. The correct "format" parameter must be specified in the request, It's that second requirement that tends to be the cause of most failed ajax requests in my own development (usually because I forget, or it wasn't sent properly in the Ajax request). -- Hector On Tue, Mar 23, 2010 at 11:57 PM, Саша Стаменковић <[email protected]>wrote: > I'm getting a number of logs daily. Very strange, it can't be that all of > these people don't have javascript enabled. > > Regards, > Saša Stamenković > > > > On Tue, Mar 23, 2010 at 8:15 PM, Саша Стаменковић <[email protected]>wrote: > >> Interesting. Is there a way to solve it on one place. What is enough for >> me is to prevent logging errors in error controller. >> So custom exception thrown from controller plugin is fine...if ajax action >> is called without ajax. >> >> Regards, >> Saša Stamenković >> >> >> >> On Tue, Mar 23, 2010 at 5:43 PM, Hector Virgen <[email protected]>wrote: >> >>> The AjaxContext helper, in my opinion, is used to enhance an existing >>> page with Ajax functionality. That means your page would be accessible >>> normally without javascript, and then enhanced when javascript is available. >>> >>> If your action is coded to be Ajax-only, and somehow a user requests that >>> page without Ajax, then it seems proper that an error of some type should be >>> thrown. You could create a new exception for this case, and throw it within >>> your action if the page is requested without Ajax: >>> >>> public function facebookAction() >>> { >>> if (null === $this->_helper->ajaxContext->getContext()) { >>> throw new AjaxRequiredException('Ajax is required to view this >>> page'); >>> } >>> } >>> >>> You could then test for this in your ErrorController and show a helpful >>> error message to the user. >>> >>> Another option would be to create a facebook.phtml file that shows the >>> helpful error message. >>> >>> -- >>> Hector >>> >>> >>> On Tue, Mar 23, 2010 at 5:50 AM, umpirsky <[email protected]> wrote: >>> >>>> >>>> In init method of my controller I have >>>> >>>> public function init() { >>>> $this->_helper->ajaxContext >>>> ->setActionContext('facebook', 'html') >>>> ->setActionContext('twitter', 'html') >>>> ->initContext(); >>>> } >>>> >>>> This loads facebook and twitter widgets via ajax. They are in >>>> facebook.ajax.phtml and twitter.ajax.phtml and this works ok. But, very >>>> often I see in my error logs >>>> >>>> 2010-03-23T00:15:00+01:00 ERR (3): exception 'Zend_View_Exception' with >>>> message 'script 'index/facebook.phtml' not found in path >>>> (application/modules/default/views/scripts/)' in >>>> Zend/View/Abstract.php:976 >>>> Stack trace: >>>> #0 Zend/View/Abstract.php(876): >>>> Zend_View_Abstract->_script('index/facebook....') >>>> #1 Zend/Controller/Action/Helper/ViewRenderer.php(897): >>>> Zend_View_Abstract->render('index/facebook....') >>>> #2 Zend/Controller/Action/Helper/ViewRenderer.php(918): >>>> >>>> Zend_Controller_Action_Helper_ViewRenderer->renderScript('index/facebook....', >>>> NULL) >>>> #3 Zend/Controller/Action/Helper/ViewRenderer.php(957): >>>> Zend_Controller_Action_Helper_ViewRenderer->render() >>>> #4 Zend/Controller/Action/HelperBroker.php(277): >>>> Zend_Controller_Action_Helper_ViewRenderer->postDispatch() >>>> #5 Zend/Controller/Action.php(523): >>>> Zend_Controller_Action_HelperBroker->notifyPostDispatch() >>>> #6 Zend/Controller/Dispatcher/Standard.php(289): >>>> Zend_Controller_Action->dispatch('facebookAction') >>>> #7 Zend/Controller/Front.php(954): >>>> >>>> Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), >>>> Object(Zend_Controller_Response_Http)) >>>> #8 Zend/Application/Bootstrap/Bootstrap.php(97): >>>> Zend_Controller_Front->dispatch() >>>> #9 Zend/Application.php(366): >>>> Zend_Application_Bootstrap_Bootstrap->run() >>>> #10 public_html/index.php(24): Zend_Application->run() >>>> #11 {main} >>>> >>>> I assume that for some reason (may be disabled javascript or direct url >>>> visit) request goes not from ajax, but full page request without ajax >>>> headers and /format/html. >>>> >>>> How can I fix to show just widget content, and skipp this error? >>>> -- >>>> View this message in context: >>>> http://n4.nabble.com/Help-with-ajaxContext-helper-tp1679001p1679001.html >>>> Sent from the Zend Framework mailing list archive at Nabble.com. >>>> >>> >>> >> >
