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值。
答案 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是一个字符串,所以你必须解析它。 执行以下操作: