1. 云栖社区>
  2. PHP教程>
  3. 正文

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

作者:用户 来源:互联网 时间:2017-12-01 13:07:49

phpjson问题失败返回undefined或者

php 返回 json 为空 undefined 或者 失败的问题 - 摘要: 本文讲的是php 返回 json 为空 undefined 或者 失败的问题,   在用 php 对 Ajax 进行响应并返回 json 的时候,遇到一个很棘手的问题,就是 responseJSON 的值为 undefined, 如图: 我自然就想到是不是发送的不是 application/json 类型的数据呢。


 


在用 php 对 Ajax 进行响应并返回 json 的时候,遇到一个很棘手的问题,就是 responseJSON 的值为 undefined, 如图:


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


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


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


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


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


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


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


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


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


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


echo "kkk";


则此时responseText的数据为:


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


"{"a":"b"}kkk" 是一个无法被解析为JSON的数据,所以此时responseJSON 为undefined。


 

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , json , 问题 , 失败 , 返回 , undefined 或者 ,以便于您获取更多的相关知识。