我从服务器获得了一个JSON对象({error:true})。
我尝试检查对象是否包含键"error“,以及键是否存在,函数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,对象包含了"error“键

发布于 2016-01-03 18:43:15
我认为问题出在您接收的JSON对象上。事实上,关键不是error,而是'error'。尝试查看data.hasOwnProperty("'error'")是否正常工作。
发布于 2016-01-03 18:42:36
您是否尝试过使用if(data && data.error)而不是if (data.hasOwnProperty('error'))
这可能是因为error属性是继承的。有关hasOwnProperty和继承属性here的更多信息,请参阅
发布于 2016-01-03 19:00:12
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)
})JSON BTW:如果它是,在控制台中,你会看到:

https://stackoverflow.com/questions/34575556
复制相似问题