ajax+jquery+flea+smarty实现了通过选择下拉列表动态显示相应的数据

本文介绍了一个使用FleaPHP框架实现AJAX功能的例子。通过在控制器中定义AJAX方法并结合Smarty模板引擎,实现了根据选择项变化动态加载数据的功能。

在fleaphp论坛有相关的讨论: http://www.fleaphp.org/bbs/viewthread.php?tid=3345&highlight=, 但是帖子里面说得不完整。

 

于是自己动手做了尝试

 

修改FleaPHP/Example/Smarty/APP/Controller/Default.php

  1.     function actionIndex() {
  2.         $ajax =& FLEA::initAjax();
  3.         $ui =& FLEA::initWebControls();
  4.          //读取地区性分类 :注册一个ajax方法,当id为islocalesite的select下拉菜单onchange时间出发后,调用服务器端的'GetLocalCategories'方法,以其值作为参数post. 成功后,调用客户端名为setlocaldpl的js函数
      
  5. $this->_registerEvent('#islocalesite''change''GetLocalCategories', array(   
  6. 'data' => '#islocalesite',   
  7. 'success' => 'setlocaldpl',   
  8. ));   
  9.         $smarty =& $this->_getView();
  10.         /* @var $smarty Smarty */
  11.         $smarty->assign('my_var''The smarty template engine.');
  12.         $smarty->assign('islocalesite''1');
  13.         $smarty->display('tpl-index.html');
  14.     }
  15.     function actionGetLocalCategories()   
  16.     {   
  17.         $t = time();
  18.         $nodes = array(
  19.             array('name' => '列表项目 1''class_id' => date('Y-m-d H:i:s', $t++)),
  20.             array('name' => '列表项目 2''class_id' => date('Y-m-d H:i:s', $t++)),
  21.             array('name' => '列表项目 3''class_id' => date('Y-m-d H:i:s', $t++)),
  22.             array('name' => '列表项目 4''class_id' => date('Y-m-d H:i:s', $t++)),
  23.             array('name' => '列表项目 5''class_id' => date('Y-m-d H:i:s', $t++)),
  24.             array('name' => '列表项目 6''class_id' => date('Y-m-d H:i:s', $t++)),
  25.         );
  26.       FLEA::loadClass('FLEA_Ajax');   
  27.       echo json_encode($nodes);   
  28.       exit;
  29.     }

FleaPHP/Example/Smarty/templates/tpl-index.html

  1. <script language="JavaScript" type="text/javascript" src="../../FLEA/FLEA/Ajax/jquery.js"></script>
  2. <script type="text/javascript">   
  3. function setlocaldpl(response)   
  4. {   
  5. alert(response)
  6. var list=eval('(' + response + ')');   
  7. $('#class_id').get(0).options.length=null;   
  8. for(var i=0;i<list.length;i++)   
  9. {   
  10.   //alert(list[i].name)  
  11.   $('#class_id').get(0).options.add(new Option(list[i].name,list[i].class_id));
  12. }   
  13. }   
  14. </script>   
  15. {{ dump_ajax_js }}
  16. <select name="islocalesite" id="islocalesite">   
  17.           <option value="0" {{if $islocalesite==0}}selected="selected"{{/if}}>无地域性</option>   
  18.           <option value="1" {{if $islocalesite==1}}selected="selected"{{/if}}>有地域性</option>   
  19. </select>   
  20. {{webcontrol type="dropdownlist" items=$topcategories name='class_id'}} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值