您好,欢迎访问一九零五行业门户网

实习小结十二:Ajax的get函数使用实例

好久没来写博客了,并不是懈怠了,而是最近在写一个post文章管理的大module,由于php和zend没怎么学,所以花费了大概一周的时候,才实现了增删改查功能,最近在改进模块功能,因为那里面的代码量实在太大,具体的要想一想才能写博客,这次写的是针对修改文章状态,使用ajax实现的,以前一直不知道ajax的好处,这次具体使用了,才算知道了一些皮毛,接下来,进入正题。
首先贴一下ajax代码:
script>$(function() { $(.post-list-table .check).click(function() {var post_id = $(this).parent().attr(alt); var status = $(this).attr(alt); $.get(/post/operate/+ post_id +/?status=+ status, function(ret) { console.log(ret); if(ret[1] == 1) { $(table tbody .status-+ post_id).html(published); } elseif(ret[1] == -1) { $(table tbody .status-+ post_id).html(rejected); } else { $(table tbody .status-+ post_id).html(draft); } }); }); $(.post-list-table .delete).click(function() {if(confirm('确认删除?')) { var url = $(this).attr('url'); $.getjson(url, function(ret) {console.log(ret); if(ret[0] == true) { $('.delete[url='+url+']').parents('tr').remove(); } }); } });})script>
从代码看出来,实现的是更改状态和删除两个功能,分别来自不同的action,接下来贴controller里面的action。
publicfunctionoperateaction() {if(!$this->userhaspermission('admin', 'edit_review')) { return$this->requirepermission('admin', 'edit_review'); } $ret = false; $request = $this->getrequest(); $log_table = $this->getpostlogtable(); $user_service = $this->getservicelocator()->get('userservice'); $curr_user = $user_service->getcurrentuser(); $post_id = $this->params()->fromroute('id', null); $post = $this->getposttable()->getpostbyid($post_id); $from_status = $post['post_status']; $status = $request->getquery('status', null); $log_row = array(); if (!is_null($status)) { if($post['post_status'] != $status) { $ret = $this->getposttable()->checkstatus($post['id'], (int)$status); //var_dump($ret);exit();if ($ret) { $log_row['post_id'] = $post_id; $log_row['user_id'] = $curr_user->id; $log_row['user_name'] = $curr_user->username; $log_row['date'] = date('y-m-d',time()); $log_row['from_status'] = $from_status; $log_row['to_status'] = $status; $log_table->addrows($log_row); } } $ret = true; } $jsonmodel = new jsonmodel(array($post_id, $ret ? (int)$status : $ret)); //var_dump($jsonmodel);exit();return$jsonmodel; } publicfunctiondeletepostaction(){if(!$this->userhaspermission('admin', 'view_product')) { return$this->requirepermission('admin', 'view_product'); } $post_id = (int) $this->params()->fromroute('post_id', 0); $ret = false; if ($post_id) { $table = $this->getposttable(); $table->deleterowbyid($post_id); $this->layout()->selectedtab = 'post-list'; $ret = true; } returnnew jsonmodel(array($ret)); }
两个action的路由设置就不写了,也没有具体的phtml网页,只是实现功能而已。
ajax代码中,通过.get(url,data)函数,注意,此处的data是指action或者phtml返回的jsonmodel的array数组,是返回的所有数据。实际上,在click之后,get的第一个参数,就执行了action,顺便获取了数据,然后根据参数,执行操作,这是非常方便的。
贴一下图吧,虽然看不出效果:
点击绿勾的话,status就是变成published,点击红叉,就会变成rejected,红垃圾箱,就是点击删除。
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了实习小结十二:ajax的get函数使用实例,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。
其它类似信息

推荐信息