`

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

阅读更多

 

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

 

0
5
分享到:
评论

相关推荐

    ajax获取json数据为undefined原因分析

    然而,有时在使用Ajax获取JSON数据时,可能会遇到返回结果为`undefined`的问题。这个问题通常出现在尝试访问JSON数据的属性时,但数据并没有正确解析或转换为JavaScript对象。以下是对这一问题的深入分析和解决方法...

    PHP 获取JSON json_decode返回NULL解决办法

    PHP 获取JSON json_decode返回NULL解决办法,不小心在返回的json字符串中返回了BOM头的不可见字符,某些编辑器默认会加上BOM头,这样处理才能正确解析json数据

    C#后台返回json类型数据

    ### C#后台返回JSON类型数据 在Web开发中,经常需要从前端向后端发送请求并获取响应数据。其中一种常见的数据格式就是JSON(JavaScript Object Notation),它是一种轻量级的数据交换格式,易于人阅读和编写,同时...

    struts2返回JSON数据的两种方式

    此处与第一种方式的前端代码基本相同,唯一的区别在于将`dataType`设置为`'json'`,这意味着期望服务器返回的数据是JSON格式。 2. **后端**: 在Action类中,添加一个名为`jsonData`的私有成员变量,用于存储JSON...

    struts2返回json

    在Struts2中,返回JSON(JavaScript Object Notation)数据类型是一种常见的需求,尤其是在开发AJAX或者前后端分离的应用时。JSON是一种轻量级的数据交换格式,它允许服务器向客户端发送结构化的数据,而无需解析...

    SSH封装接口返回Json数据

    最后,`DataJson`这个文件可能包含了示例的Json数据,可能是接口返回的样本,或者是用于测试接口的输入数据。分析这个文件可以帮助我们更好地理解接口的输出格式和预期行为。 总结来说,"SSH封装接口返回Json数据...

    PHP 简单封装返回JSON数据接口

    本文使用 php 来做一个简单的接口,客户端传入数据,该接口返回 JSON 格式数据。 api.php $code, message =&gt; $message, data =&gt; $data ]; # 转换为json并打印测试 echo json_encode($result); exit; } } # ...

    PHP与AJAX返回json数据调用.zip

    PHP与AJAX返回json数据调用.zip

    php json简单返回demo

    简单的php json返回demo,放到服务器上即可使用,简单易懂

    java 通过发送json,post请求,返回json数据的方法

    java 通过发送json,post请求,返回json数据的方法 java 通过发送json,post请求,返回json数据的方法

    动态调取webservice返回json数据并处理

    1. 解析JSON:使用JSON库(如JavaScriptSerializer, Newtonsoft.Json的Json.NET等)将接收到的JSON字符串转换为C#对象。例如,如果JSON数据表示一个数组,可以解析成List;如果表示一个对象,可以解析成自定义的类...

    java后端返回json给前端

    java后端返回json给前端,包含对象JsonObject,JsonConfig,JsonArray.

    由php对象生成json字符串 把php对象变成json字符串.zip

    通过实现JsonSerializable接口,我们可以控制对象如何被转换为JSON,get_object_vars()函数返回对象的所有公共属性。 关于JSON编码的选项,PHP提供了JSON_HEX_QUOT、JSON_HEX_APOS、JSON_HEX_AMP、JSON_HEX_TAG等...

    Java-tomcat-axis2开发webservice返回json数据

    标题“Java-tomcat-axis2开发webservice返回json数据”涉及的是使用Java、Tomcat服务器以及Axis2框架来创建Web服务,并返回JSON格式的数据。这是一个常见的技术组合,用于构建RESTful API或者提供服务化接口。下面...

    JSON FOR PHP4.0 PHP JSON操作 Services_JSON

    这个函数通常会解析JSON字符串,并返回一个等效的PHP数组或对象。由于PHP 4.0没有内置的`json_decode`,Services_JSON库通过解析JSON语法并创建相应的PHP结构来弥补这一不足。 `JSON_CLASS`可能是Services_JSON库中...

    使用Ajax向PHP服务端发送请求并返回JSON数据

    总结起来,使用Ajax向PHP服务端发送请求并接收JSON数据涉及的主要步骤包括创建XMLHttpRequest对象、设置回调函数、打开连接、设置请求头、发送请求以及在服务端处理请求和返回JSON数据。理解这些步骤对于Web开发中的...

    json for PHP4.0

    例如,一个关联数组可以被转换为JSON对象,一个数值或字符串数组可以被转换为JSON数组。 ```php class Json { function encode($data) { // 实现代码,将PHP数据转换为JSON字符串 } } ``` 使用这个类时,你可以...

    jQuery中ajax请求后台返回json数据并渲染HTML的方法

    5. 异常处理:在JSON数据为空,即没有搜索到任何菜品的情况下,使用else分支将错误信息显示给用户。 6. 安全性和性能:文章中并没有详细提及,但在处理前端请求时应当考虑到数据的验证和过滤,防止注入攻击等安全...

    服务器端返回json数据

    3. **设置响应头**:在准备发送JSON数据前,需要在HTTP响应头中设置“Content-Type”为“application/json”,这样客户端就知道服务器返回的是JSON格式的数据。 4. **发送响应**:使用HttpServletResponse对象的`...

Global site tag (gtag.js) - Google Analytics