Javascript hasOwnProperty不起作用
我从服务器获得了一个JSON对象(Javascript hasOwnProperty不起作用,javascript,angularjs,json,http,Javascript,Angularjs,Json,Http,我从服务器获得了一个JSON对象({error:true}) 我试图检查对象是否包含键“error”,并且键是否存在,函数hasOwnProperty返回false 这是我的代码: $http({ headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;' }, url: '/Modules/Partners/Mailing/SendMail.ashx',
{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
您是否尝试过使用
if(data&&data.error)
而不是if(data.hasOwnProperty('error'))
这可能是因为错误属性是继承的。查看有关hasOwnProperty和继承属性的更多信息您是否尝试使用
if(data&&data.error)
而不是if(data.hasOwnProperty('error'))
这可能是因为错误属性是继承的。查看更多关于hasOwnProperty和继承属性的信息我认为问题在于您收到的JSON对象。事实上,关键不是
错误
,而是错误
。尝试查看data.hasOwnProperty('error')
是否有效。我认为问题在于您收到的JSON对象。事实上,关键不是错误
,而是错误
。尝试查看data.hasOwnProperty('error')
是否有效。检查从服务器发送的数据的内容类型。它应该是“application/json”,然后隐式转换为javascript对象。
要检查是否使用“typeof data”,它必须是“object”,否则如果是其字符串,则需要使用JSON将其解析为object。parse检查从服务器发送的数据的内容类型。它应该是“application/json”,然后隐式转换为javascript对象。
要检查使用“数据类型”,它必须是“object”,否则如果是字符串,则需要使用JSON将其解析为object。parse您的
成功
方法接收字符串
数据,而不是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,在控制台中,您将看到:
您的
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,在控制台中,您将看到:
我不知道为什么,但是像这样返回对象 序列化(“{\”错误\“:true}”) 而不是 序列化(“{'error':true}”); 或 序列化(“{error:true}”)
解决我的问题我不知道为什么,但返回的对象如下 序列化(“{\”错误\“:true}”) 而不是 序列化(“{'error':true}”); 或 序列化(“{error:true}”)
解决我的问题您可以使用操作符中的
检查对象/数组上是否存在属性。
它可以像这样使用数据中的“错误”
//将返回true您可以使用操作符中的检查对象/数组上是否存在属性。
它可以像这样使用数据中的“error”(错误)
//将返回true只需注意,对于JSON对象,必须将键括在引号中,而不是单引号中,否则无效!!请注意,对于JSON对象,必须将键括在引号中,而不是单引号中,否则无效!!