thinkphp 控制器中 页面重定向前不能echo?怎么解决

//用户注册功能的实现
public function reg(){
header('Content-Type: text/html; charset=utf-8'); /*var_dump($_POST);
var_dump($_SESSION);
echo"<script>alert('什么鬼')</script>";
die;*/

if($_POST["reg"]){
if(md5($_POST['verify'])!=$_SESSION['verify']){
echo"<script>alert('验证码输入错误')</script>";exit;
//如果这里我写exit;就可以弹出js的错误对话框但是不写的话,就直接重定向了
$this->redirect("showReg");
}
/*var_dump($_POST);
var_dump($_SESSION);
echo"<script>alert('什么鬼')</script>";
die;*/
这个是之前测试代码可以忽略

你这样肯定会跳转的,如果写了exit就表示中断执行,就不会执行后面的跳转,这里把exit换成die一样的效果。而且你没有说清楚你的需求。你要echo就不要跳转,如果要跳转,要想输出echo的东西,可以将其分配到模板上自行输出
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-08-18
亲,你可以直接利用redirect 进行提示呢,不一定非得用alert!~
建议你直接这么写:
$this->error("验证码错误");
或者用redirect
$this->redirect('showReg', '', 5, '验证码输入错误');

可以参考手册:http://document.thinkphp.cn/manual_3_2.html#page_jump_redirect
希望对你有帮助,如有不懂或回答的不对,请追问!~~本回答被提问者和网友采纳
相似回答