服务通过JSON提供以下信息
{"errors":{"subject":"foobar"}}
此错误数组中的其他内容
OR
{"ok":{"subject":"foobarfoobar"}}
此ok阵列数组中的其他内容
因此,两者中的任何一个都存在,而不是同时存在。任何一个不存在我总是得到一个访问错误,因为当然不存在这个问题
我完全不知道如何处理这个结果。我总是得到“不能......未定义”:
Currenlty我有:
if (data[0].hasOwnProperty("status")) {
alert('ddd');
}
如果提供错误或确定,测试的正确方法是什么?
更新
blex是对的:但在服务器端使用:
echo json_encode( array('errors' => $result['errors']) );
这是不是意味着我错误已经是数组的第一个元素?为什么这被看作是一个对象?
溶液/ LEARNING:
小心PHP!如上所述,echo json_encode( array('errors' => $result['errors']) );
不会导致将其编码为JSON数组。我误解和监督的是,{
是对象不是阵列的格式/表示法。所以要成为一个数组,它必须是[
。 所以在最后,PHP确实将关联数组编码为普通的对象属性,而不是数组。这是我错误的假设
答案 0 :(得分:1)
var x = { "errors": { "subject": "foobar" } };
//var x = { "ok": { "subject": "foobarfoobar" } };
if (x.errors) {
} else if (x.ok) {
}
答案 1 :(得分:0)
基本上,你已经走上正轨了。 hasOwnProperty是检查这些键是否存在的正确方法。
我不确定您使用的是哪种语言,但似乎json_encode正在将您的数组转换为单个对象,然后将该对象置于错误键下。
最后一件事,您应该考虑使用HTTP响应代码。如果您可以为好的方案返回200 OK,并为您的错误返回400或500级别的代码,那么您将能够使用更好的方法来确定如何处理这些情况。例如,jQuery.ajax能够放置两个处理程序,一个用于成功,一个用于失败。