在thinkPHP中返回json数据可以用ajaxReturn(), 但我们返回的数据是数组的时候,每次需要组装成数组,这样有点儿麻烦。
所以,尝试对ajaxReturn()方法进行封装。
1.建立一个基础控制器,其他控制器继承自这个基础控制器.
在这个控制器中定义一个方法returnErr()
- class BaseController extends Controller
- {
- /**
- * 返回错误
- * @param $errcode
- * @param $cerrmsg
- * @param $url
- */
- protected function returnErr($errcode,$errmsg,$url){
- $errcode&&$mes ['errcode'] = $errcode;
- $errmsg&&$mes ['errmsg'] = $errmsg;
- $url&&$mes ['$url'] = $errmsg;
- $this->ajaxReturn($mes);
- }
- }
- $errcode&&$mes ['errcode'] = $errcode;
- 这段代码的意思是如果$errcode为真,则执行后面的赋值语句.
2 .在其他的控制器,继承自baseController.class.php .
这样就可以调用这个returnErr()方法了.
- class LoginController extends BaseController
- {
- public function login()
- {
- //接收数据
- $cid = I('CorporateId');
- $userName = I('LoginName');
- $password = I('Password');
- $code = I('verify');
- //检验验证码
- if(!check_code($code))
- {
- $this->returnErr(1,'captcha is wrong');
- }
- }
- }
- $this->returnErr(1,'captcha is wrong');
- 调用这个返回的信息没有第三个参数.
- {"errcode":1,"errmsg":"captcha is wrong"}
如果想要实现即使是调用的时候只有两个参数.
- $this->returnErr(1,'captcha is wrong');
但是返回的时候没有传入的参数为'',效果类似
- {"errcode":1,"errmsg":"captcha is wrong", 'url':"}
那么封装的时候可以用三元运算符:
- class BaseController extends Controller
- {
- protected function returnMsg($errcode, $errmsg, $url)
- {
- $data['code'] = $errcode ? $errcode : " ;
- $data['msg'] = $errmsg ? $errmsg : '';
- $data['url'] = $url ? $url : '';
- $this->ajaxReturn($data);
- }
- }