thinkphp - TP为什么加上$this->ajaxReturn()后就打不开view模板了?
本文介绍了thinkphp - TP为什么加上$this->ajaxReturn()后就打不开view模板了?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
为什么打开login模板时什么都不显示只显示一个0呢?把这句话$this->ajaxReturn($res)
去掉就可以显示了 这是为什么??怎样才能显示呢?
public function login(){
$user=M('user');
$name=I('name');
$pw=I('pw');
$res1=$user->where("username='$name' AND password='$pw'")->select();
if($res1){
$result=1;
}else{
$result=0;
}
$this->ajaxReturn($result);
$this->display();
}
解决方案
其实Controller
的ajaxReturn
的方法已经很简单易懂,代码如下(ThinkPHPLibraryThinkController.class.php
- 210行):
protected function ajaxReturn($data,$type='',$json_option=0) {
if(empty($type)) $type = C('DEFAULT_AJAX_RETURN');
switch (strtoupper($type)){
case 'JSON' :
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
exit(json_encode($data,$json_option));
case 'XML' :
// 返回xml格式数据
header('Content-Type:text/xml; charset=utf-8');
exit(xml_encode($data));
case 'JSONP':
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
$handler = isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER');
exit($handler.'('.json_encode($data,$json_option).');');
case 'EVAL' :
// 返回可执行的js脚本
header('Content-Type:text/html; charset=utf-8');
exit($data);
default :
// 用于扩展其他返回格式数据
Hook::listen('ajax_return',$data);
}
}
在方法内部,直接就利用exit
函数进行显示退出,所以不会经过下面的display
方法.
不过,你可以在__destruct
方法里面写display
方法,那就会在exit后调用,不过,然并卵...
这篇关于thinkphp - TP为什么加上$this->ajaxReturn()后就打不开view模板了?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文