Skip to content

jQuery AJAX in Zend Framework

研究一篇老外的文章:在zend framework中使用jquery ,原文见

    http://blog.ekini.net/2007/08/28/jquery-ajax-in-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.

Click here for the tutorial.

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
function editnote(notes_id)
{
//a sample loading image thingy
$(‘#notes_entry_id’).prepend("<div id="’loading’"><a></a></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… :D
The $data that was encoded using Zend_JSON in the controller/action can now be accessed in the Javascript after you call the eval().

zend framework ajax(78)zend framework layout(8)jquery ajax after post(1)zend framework(3)jquery zend framework(6)zendframework(2)zend ajax(25)Zend jquery(37)zend framework tutorial(1)http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/(2)zendframework Ajax(9)zend framework php pk(1)tutorial zend framework V1.6(1)ajax in zend framework(1)jquery in zend framework(1)

Share in Google Reader Share in Google Reader 分享到 FriendFeed 分享到 FriendFeed 推荐到豆瓣 推荐到豆瓣 分享到 Twitter 分享到 Twitter

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*