php 返回 json 为空 undefined 或者 失败的问题_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > php 返回 json 为空 undefined 或者 失败的问题

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

 2012/8/21 11:07:21  panyanyany  程序员俱乐部  我要评论(0)
  • 摘要:在用php对Ajax进行响应并返回json的时候,遇到一个很棘手的问题,就是responseJSON的值为undefined,如图:我自然就想到是不是发送的不是application/json类型的数据呢?于是查看了一下response的头部:也没有问题啊!?这到底是怎么回事?事件的解决过程是这样的,经过漫长的查找之后,终于发现是一个函数调用的时候缺少参数,结果php就发送了一些错误信息到页面上,紧接着又发送json数据,于是两种数据混合在一起,evalJS无法进行解析
  • 标签:PHP 问题 失败 JSON JS

?

在用 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。

?

发表评论
用户名: 匿名