我如何获得json值

时间:2015-04-19 18:43:03

标签: php ajax json

  error:function(response)
            {
                alert("e"+typeof response+"     "+Object.keys(response).length+"   "+"   "+response.txt);
            } /*use console.log*/

这是我在ajax post方法中的错误回调函数。

我从php返回数据如下

   die('{"status":0,"txt":"Email Already Exists"}');

它是有效的json,我使用jsonlint进行了检查。 [但我对此死亡陈述的有效性也有疑问]

我收到如下警告

    eobject     21     undefined

是的,它是JSON对象。键中总共有21个字符[不确定我的假设是否正确]。但是response.txt是如何定义的。如果我打印response,则会显示object object

但我在我的php文件中看不到Chrome的Net标签中的任何响应。实际上ajax回调在我的html页面中。死代码来自我的php页面。

如果我错了,请纠正我。如何获得我的JSON值。

4 个答案:

答案 0 :(得分:0)

在php中使用json_encode并在JavaScript中使用JSON.parse

答案 1 :(得分:0)

您应该设置正确的标题,并使用json_encode

<?php
$data = array('status'=>0, 'txt'=>'Email Already Exists');
header('Content-Type: application/json');
echo json_encode($data);

答案 2 :(得分:0)

查看error的{​​{3}}:

Type: Function( jqXHR jqXHR, String textStatus, String errorThrown )

您调用response的变量不是响应,而是documentation

你需要从中读取响应(因为你已经没有在一个方便的变量中得到响应)并手动解析它(因为即使你设置了jQuery也不会自动解析错误消息为JSON) dataType属性或Content-Type标题。)

error: function (jqXHR) {
    var response = JSON.parse(jqXHR.responseText);
    console.log(response);
}

我重新考虑你的方法。内部服务器错误是向用户传达此类错误的不良方式。我无法想出合适的HTTP状态代码来描述您的消息所暗示的错误,因此我返回200 OK并离开success函数来解析响应中的错误消息

答案 3 :(得分:0)

die函数等同于exit,其参数用于在终止脚本之前提供消息。它的实施是正确的。 但是,如果不解析JSON字符串,则无法访问对象属性。 response是一个字符串,所以你必须解析它。 执行以下操作:

  • 使用alert()或console.log()检查响应,以确保它没有被更改
  • 确保包含所需的.js文件,以便为不支持本机JSON的浏览器实现JSON.parse(json2.js)
  • 之后,如果它还不能正常工作,请在调用JSON.parse时粘贴javascript异常