jQuery AJAX in Zend Framework
Filed Under (General) by Wenbert on 28-08-2007
Tagged Under : AJAX, jquery, Zend Framework
I have posted a sample code on my wiki on how to submit variables to an action controller. The sample code contains a niffty jQuery plugin - the jQuery Calendar.
Update (07-08-2008): For those who don’t know, Zend Framework has built-in stuff for Dojo. So you might want to check it out first. I still prefer jQuery though.
Update (05-07-2008): Since this post has been getting a lot of traffic and the tutorial to my wiki is not that good, I have decided to update this page and post a simpler and shorter tutorial.
So here it is…
The Javascript will look something like this:
//For Edit Action f u n c t i o n editnote(notes_id) { //a sample loading image thingy $('#notes_entry_id').prepend(" <div id="loading"><img src="http://blog.ekini.net/wp-admin/"+baseUrl+"/images/loading.gif" alt="" /></div> "); //Get notes from database - in ZF, notes = controller and getnoteforedit = action $.post(baseUrl+"/notes/getnoteforedit",{ notes_id: notes_id }, function(data){ $('#loading').remove(); obj = window.eval(data); $('#textarea_id').val(obj['notes']); }, "json"); //this returns JSON. }
Then my controller would look something like this:
/** * Get note for action * */ public function getnoteforeditAction() { $this->_helper->layout->disableLayout(); //disable layout $this->_helper->viewRenderer->setNoRender(); //suppress auto-rendering //the 2 lines above are very important. this action would return html tags from the layout and will look for a phtml file. we disable the layout and suppress auto-rendering of the phtml view files SO that our JSON will be echoed properly to the Javascript... require_once('models/Notes.php'); require_once('models/UsersNotes.php'); try { if (!$this->_request->isPost()) { throw new Exception('Invalid action. Not post.'); } $Notes = new Notes(); $data = array(); if ($result = $Notes->fetchRow("notes_id=".$Notes->getAdapter()->quote($_POST['notes_id'])."")->toArray()) { $data['notes_id'] = $result["notes_id"]; $data['notes'] = $result["notes"]; $data['datetime_posted'] = $result["datetime_posted"]; $data['status'] = $result["status"]; $json = Zend_Json::encode($data); //basically, $data array will also be available in the JS. } else { throw new Exception('Note ID not found.'); } echo $json; //this will echo JSON to the Javascript unset($json); unset($data); } catch (Exception $e) { echo $e->getMessage(); } }
That’s about it… ![]()
The $data that was encoded using Zend_JSON in the controller/action can now be accessed in the Javascript after you call the eval().
Related posts:
- How to do AJAX in jQuery with JSON callback in Zend Framework Here is how to do it in Zend Framework. Let’s...
- Mixing PHP Variables with Javascript (Zend Framework and jQuery) Sometimes, I “mix” PHP variables with Javascript. For example, I...
- jQuery: Using AutoComplete on dynamically created elements This is a common problem wherein you dynamically create your...
- Zend Framework How To: Handling checkboxes using Zend_Form and jQuery I am sharing this because it took me a while...
- Zend Framework Zend_Auth and a Plugin to Check Access to a Page I have written this simple user authentication and user access...
Related posts brought to you by Yet Another Related Posts Plugin.

I use jQuery-PHP library with ZF, see example on project homepage
Thanks Anton. Have you created a proposal for this in ZF? It would be great if this made it to the official ZF release.
couldnt u you do this in your controller? it works for me:
$this->_helper->json(Zend_Json::encode($array));