您的位置:首页 > 编程语言 > PHP开发

php 返回 json 为空 undefined 或者 失败的问题

2012-08-16 09:39 260 查看
在用 php 对 Ajax 进行响应并返回 json 的时候,遇到一个很棘手的问题,就是 responseJSON 的值为 undefined, 如图:



我自然就想到是不是发送的不是 application/json 类型的数据呢?于是查看了一下 response 的头部:



也没有问题啊!?这到底是怎么回事?

事件的解决过程是这样的,经过漫长的查找之后,终于发现是一个函数调用的时候缺少参数,结果php就发送了一些错误信息到页面上,紧接着又发送json数据,于是两种数据混合在一起,evalJS无法进行解析,就产生了 undefined 的对象了。又由于我关掉了一些警告的显示,所以页面也不会显示其他的警告信息等等。

事实上,如果观察一下responseText 的内容,就会发现,其实在文本的末尾就是我要返回的 json 数据了,前面的</table></font>等都是错误信息的一部分。



依此类推的话,实际上php发送json失败的原因不仅仅是函数调用时缺少参数了,只要是在发送之前产生了任何错误信息,都可能引起发送失败。而要想知道到底是哪些原因引起了错误,就直接把responseText 的内容复制出来,再慢慢查找一下就行了。

实事上,除了在返回JSON数据前后不能出现任何错误和警告之外,也不能在返回JSON数据前后再返回其他无法被解析为JSON的数据。比如:

$this->sendJson(array("a"=>"b"));
echo "kkk";

则此时responseText的数据为:



"{"a":"b"}kkk" 是一个无法被解析为JSON的数据,所以此时responseJSON 为undefined。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐