Mam metodę kontrolera (http://localhost/module/controller/action), która odpala model i zwraca wynik zapytania w postaci JSON. Wszystko działa, jak odpalę to w przeglądarce jako zwykły url (http://localhost/module/controller/action), a kiedy chcę to dostać ajaksem - krzyczy, że zmienna obiektu klasy modelu nie jest obiektem. Próbowałem to zrobić omijając strukturę modułową - nic to nie dało, nadal nie daje rady załadować klasy modelu (a przy ręcznym odpaleniu adresu w przeglądarce działa jak należy). Z góry dziękuję za pomoc, poniżej niezbędne fragmenty kodu.
Oto, co zwraca firebug jako odpowiedź:
<br />
Kod AJAX (jQuery):
function getBrands(symbol) { var url = '/module/controller/action/symbol/' + symbol; var data = {}; $.post(url,data,function(resp) { },'json'); }
Kod PHP akcji kontrolera (jak odpalę w przeglądarce odpowiedni adres - dostaję json z danymi - http://localhost/module/controller/action):
$this->_helper->viewRenderer->setNoRender(); $this->_helper->getHelper('layout')->disableLayout(); if(!$this->getRequest()->isXmlHttpRequest()) //die('Ops... ajax request not found.'); $oVehicles = new Application_Model_Vehicles(); $rows = $oVehicles->getAllBrands(); // to jest linia 97 pliku kontrolera if($rows) foreach($rows as $row) $result[$row->id] = $row->name;