yii2.0Ajax方法报错

  • 报错内容
  • 报错原因
  • 解决方案

报错内容

exception 'yii\web\HeadersAlreadySentException' with message 'Headers already sent in E:\project\components\BaseController.php on line 112.' in E:\project\vendor\yiisoft\yii2\web\Response.php:366
Stack trace:
#0 E:\project\vendor\yiisoft\yii2\web\Response.php(339): yii\web\Response->sendHeaders()
#1 E:\project\vendor\yiisoft\yii2\web\ErrorHandler.php(135): yii\web\Response->send()
#2 E:\project\vendor\yiisoft\yii2\base\ErrorHandler.php(111): yii\web\ErrorHandler->renderException(Object(yii\web\HeadersAlreadySentException))
#3 [internal function]: yii\base\ErrorHandler->handleException(Object(yii\web\HeadersAlreadySentException))
#4 {main}
Previous exception:
exception 'yii\web\HeadersAlreadySentException' with message 'Headers already sent in E:\project\components\BaseController.php on line 112.' in E:\project\vendor\yiisoft\yii2\web\Response.php:366
Stack trace:
#0 E:\project\vendor\yiisoft\yii2\web\Response.php(339): yii\web\Response->sendHeaders()
#1 E:\project\vendor\yiisoft\yii2\base\Application.php(656): yii\web\Response->send()
#2 E:\project\components\BaseController.php(113): yii\base\Application->end()
#3 E:\project\controllers\ClueController.php(329): app\components\BaseController->backToJson(0, Array, '\xE6\x93\x8D\xE4\xBD\x9C\xE6\x88\x90\xE5\x8A\x9F')
#4 [internal function]: app\controllers\ClueController->actionAjaxlist()
#5 E:\project\vendor\yiisoft\yii2\base\InlineAction.php(57): call_user_func_array(Array, Array)
#6 E:\project\vendor\yiisoft\yii2\base\Controller.php(157): yii\base\InlineAction->runWithParams(Array)
#7 E:\project\vendor\yiisoft\yii2\base\Module.php(528): yii\base\Controller->runAction('ajaxlist', Array)
#8 E:\project\vendor\yiisoft\yii2\web\Application.php(103): yii\base\Module->runAction('clue/ajaxlist', Array)
#9 E:\project\vendor\yiisoft\yii2\base\Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
#10 E:\project\web\index.php(20): yii\base\Application->run()
#11 {main}

报错原因

在action中运行echo,var_dump等方法后没有中断,yii1.0中Ajax方法返回数据可以直接通过echo获取,但是yii2.0的Response类中增加了对于返回输出信息的定义,所以当echo后没有中断程序,yii自带的代码就会出错,不过目前我发现的情况是,只有在返回的数据结构复杂的情况下才会出错,尤其是数据中存在json字符串这种形式。

解决方案

  1. 在echo输出给页面信息后,打断点
  2. 用return代替echo等输出
public fucntion actionTest()
{//此方法为ajax访问方法$data = array('a' => 1,'b' => json_encode(array(1,2,3)));echo json_encode($data);die;//这种方法是可行的,也是yii1.0中常用的输出方法return json_encode($data);//这种方法也能得到数据,这里推荐使用这种方法
}

有两个问题我没有搞清楚原因是什么:

  1. 简单的数组为什么可以正常输出,复杂的数组输出就会有问题
  2. 为什么在浏览器直接访问方法并不会报错,用Ajax调用就会报错

yii2.0框架报错相关推荐

  1. python 3.8.0 编译报错 Could not import runpy module 解决方案

    环境 CentOS 7 Gcc 4.8.5 Python 3.8.0 相关报错 make build_all CFLAGS_NODIST=" -fprofile-use -fprofile- ...

  2. yii2.0框架中自定义接口,实现类的多继承

    一.前言 最近有个需求,比如有A,B,C,D四个文件,原来的逻辑是,A继承B,C继承D.后来由于A和C的逻辑太像,既然如此的话,为什么不把A,C写一起呢,第一是方便维护,第二也是减少无用的代码,说干就 ...

  3. wince6.0 编译报错:error C2220: warning treated as error - no 'object' file generated的解决办法

    内容提要:wince6.0编译报错:"error C2220: warning treated as error - no 'object' file generated" 原因是 ...

  4. wince6.0 编译报错:error C2220: warning treated as error - no 'object' file generated的解决办法...

    内容提要:wince6.0编译报错:"error C2220: warning treated as error - no 'object' file generated" 原因是 ...

  5. RedHat5.5_X64 Linux安装oracle 11.2.0.3 报错

    [javascript] view plaincopy REDHAT linux 安装 11G  11.2.0.3   报错 oracle用户执行./runinstaller后 直接报错 查看日志后 ...

  6. php实现多条件查找分页,Yii2.0框架实现带分页的多条件搜索功能示例

    本文实例讲述了Yii2.0框架实现带分页的多条件搜索功能.分享给大家供大家参考,具体如下: 方法一 在控制器中 public function actionShow(){ $where['title' ...

  7. 01-路由跳转 安装less this.$router.replace(path) 解决vue/cli3.0语法报错问题

    01-路由跳转 安装less this.$router.replace(path) 解决vue/cli3.0语法报错问题 参考文章: (1)01-路由跳转 安装less this.$router.re ...

  8. 一种解决Android studio 3.0 Build报错的方法

    一种解决Android studio 3.0 Build报错的方法 参考文章: (1)一种解决Android studio 3.0 Build报错的方法 (2)https://www.cnblogs. ...

  9. 未能加载文件或程序集 Newtonsoft.Json, Version=4.5.0.0 的报错,解决方法

    未能加载文件或程序集 Newtonsoft.Json, Version=4.5.0.0 的报错,解决方法 参考文章: (1)未能加载文件或程序集 Newtonsoft.Json, Version=4. ...

最新文章

  1. WM OS手机跳过调整屏幕的终极办法
  2. ylbtech-LanguageSamples-Generics(泛型)
  3. Material Design(十一)--CoordinatorLayout和自定义视图
  4. 3、MySQL查看存储过程
  5. xsd文件转图片_如何将图片转化为PDF格式?分享一个超简单的方法给你
  6. [APIO2018] New Home 新家(线段树,二分答案,离散化)
  7. 如何将计算机加入到域环境中,如何在讲计算机加入一个WinXP的域环境
  8. .net core下简单构建高可用服务集群
  9. mysql存储过程中in条件多个值,使用临时表解决
  10. php高强度精密涂覆钢管,电力内外涂覆钢管
  11. 知乎上的44条神回复,针针见血,看完整个人通透多了
  12. 《Producter:让产品从0到1》一导读
  13. 第四次作业随笔(计算器第二步)
  14. HTML页面跳转及参数传递
  15. python测试request代理IP是否替换
  16. Codeforces Round #829 cf1753A Cowardly Rooks
  17. hexo pjax“暂时”解决aplayer插件间断播放问题
  18. 【优化模型】图论与TSP模型结合
  19. java实现九宫格解锁_Java计算手机九宫格锁屏图案连接9个点的方案总数
  20. 黑鱼资源完整模板分享 已本地化CSS JS

热门文章

  1. 【论文分享】ARCUS: Symbolic Root Cause Analysis of Exploits in Production Systems
  2. 数据库系统工程师(第一章)
  3. 校名已确定!又一所 “理工大学”,来了
  4. 计算机专业公共基础课,非计算机专业计算机公共基础课程中计算思维体现的必要性...
  5. php的smarty模板,PHP Smarty模板的安装
  6. 十分钟理解logistic回归原理
  7. jq实现表格轮播滚动——技能提升
  8. 数据库主键的设计和思考
  9. 初用CSDN博客,如何在写CSDN博客时插入黑色代码,使用高亮主题
  10. chrome 主页被篡改为hao123?技术宅带你层层深入破之 -转自知乎