我从服务器获得了一个JSON对象({error:true}
)。
我尝试检查对象是否包含密钥"错误"如果密钥存在,函数hasOwnProperty
将返回false
。
这是我的代码:
$http({
headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;' },
url: '/Modules/Partners/Mailing/SendMail.ashx',
data: $.param({ contact: JSON.stringify(contact), body: partnerObject.mailTemplate.longValue, title: "" }),
method: 'POST'
})
.success(function (data, status, headers, config) {
console.log(data);
console.log(data.hasOwnProperty('error'));
if (data.hasOwnProperty('error')) {
deferred.reject(contact);
} else {
deferred.resolve(contact);
}
//console.log(data)
})
.error(function (data, status, headers, config) {
deferred.reject(contact);
});
在控制台中我可以看到该对象包含"错误" hasOwnProperty('error')
的密钥返回false
答案 0 :(得分:3)
我认为问题出在您收到的JSON对象上。实际上,密钥不是error
而是'error'
。尝试查看data.hasOwnProperty("'error'")
是否有效。
答案 1 :(得分:1)
您的success
方法会收到String
个数据,而不是JSON
:
.success(function (data, status, headers, config) {
var result = angular.fromJson(data);
if (result.hasOwnProperty('error')) {
deferred.reject(contact);
} else {
deferred.resolve(contact);
}
//console.log(data)
})
BTW:如果它是JSON,在控制台中,你会看到:
答案 2 :(得分:0)
您是否尝试过使用if(data && data.error)
代替if (data.hasOwnProperty('error'))
可能是因为error属性是继承的。查看有关hasOwnProperty和继承属性here
的更多信息答案 3 :(得分:0)
检查从服务器发送的数据的内容类型。应该是' application / json'然后它隐式转换为javascript对象。 检查使用"类型数据"它一定是"对象"否则,如果它的字符串,那么你需要使用JSON.parse
将其解析为对象答案 4 :(得分:0)
我不知道为什么但是返回对象就好了 JsonSerializer.Serialize( “{\” 错误\ “:真}”);
而不是 JsonSerializer.Serialize( “{ '错误':真}”); 要么 JsonSerializer.Serialize( “{错误:真}”);解决我的问题
答案 5 :(得分:0)
您可以使用in
运算符检查对象/数组上是否存在属性。
可以这样使用"error" in data
//将返回true