解决dwz增删改查不局部刷新的办法

四月 03, 2019 | views
Comments 0

一个小项目,用到了dwz,苦于官方少于维护且需要一部分前端技术一直没有深挖,迫在眉睫,遇到了跟很多人一样的问题,就是增删改查不能局部刷新,苦恼啊。经多多放查找资料和翻阅源码终于皇天不负有心。

项目使用TP3.1.3

需要做一下修改

找到 Thinkphp/lib/core/Action.class.php

查找 ajaxReturn 方法

注释掉:

  1. if(func_num_args()>2) {// 兼容3.0之前用法 
  2.             $args           =   func_get_args(); 
  3.             array_shift($args); 
  4.             $info           =   array(); 
  5.             $info['data']   =   $data
  6.             $info['info']   =   array_shift($args); 
  7.             $info['status'] =   array_shift($args); 
  8.             $data           =   $info
  9.             $type           =   $args?array_shift($args):''

然后在下方添加:

if(method_exists($this,"ajaxAssign")) $this->ajaxAssign($data);//ajax赋值扩展

完整代码如下:

  1. /** 
  2.      * Ajax方式返回数据到客户端 
  3.      * @access protected 
  4.      * @param mixed $data 要返回的数据 
  5.      * @param String $type AJAX返回数据格式 
  6.      * @return void 
  7.      */ 
  8.     protected function ajaxReturn($data,$type='') { 
  9. //        if(func_num_args()>2) {// 兼容3.0之前用法 
  10. //            $args           =   func_get_args(); 
  11. //            array_shift($args); 
  12. //            $info           =   array(); 
  13. //            $info['data']   =   $data; 
  14. //            $info['info']   =   array_shift($args); 
  15. //            $info['status'] =   array_shift($args); 
  16. //            $data           =   $info; 
  17. //            $type           =   $args?array_shift($args):''; 
  18. //        } 
  19.         if(method_exists($this,"ajaxAssign")) $this->ajaxAssign($data);//ajax赋值扩展 
  20.         if(emptyempty($type)) $type  =   C('DEFAULT_AJAX_RETURN'); 
  21.         switch (strtoupper($type)){ 
  22.             case 'JSON' : 
  23.                 // 返回JSON数据格式到客户端 包含状态信息 
  24.                 //header('Content-Type:application/json; charset=utf-8'); 
  25.                  header('Content-Type:text/html; charset=utf-8'); //zhanghuihua 
  26.                 exit(json_encode($data)); 
  27.             case 'XML'  : 
  28.                 // 返回xml格式数据 
  29.                 header('Content-Type:text/xml; charset=utf-8'); 
  30.                 exit(xml_encode($data)); 
  31.             case 'JSONP'
  32.                 // 返回JSON数据格式到客户端 包含状态信息 
  33.                 header('Content-Type:application/json; charset=utf-8'); 
  34.                 $handler  =   isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER'); 
  35.                 exit($handler.'('.json_encode($data).');');   
  36.             case 'EVAL' : 
  37.                 // 返回可执行的js脚本 
  38.                 header('Content-Type:text/html; charset=utf-8'); 
  39.                 exit($data);             
  40.             default     : 
  41.                 // 用于扩展其他返回格式数据 
  42.                 tag('ajax_return',$data); 
  43.         } 

在任意一出添加:

  1. protected function ajaxAssign(&$result){ 
  2.         $result['statusCode']  =  $result['status']; 
  3.         $result['navTabId']  =  $_REQUEST['navTabId']; 
  4.         $result['message']=$result['info']; 

退出DWZ,重新登录 再试试吧!



zend