[英]Javascript hasOwnProperty does not work under Google Chrome
[英]hasOwnProperty does not work
我從服務器得到了一個 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
我認為問題出在您收到的 JSON 對象上。 事實上,關鍵不是error
而是'error'
。 嘗試查看data.hasOwnProperty("'error'")
有效。
您是否嘗試過使用if(data && data.error)
而不是if (data.hasOwnProperty('error'))
可能是因為繼承了 error 屬性。 在此處查看有關 hasOwnProperty 和繼承屬性的更多信息
檢查從服務器發送的數據的內容類型。 它應該是 'application/json' 然后它被隱式轉換為 javascript 對象。 要檢查使用“typeof data”它必須是“object”否則如果它的字符串那么你需要使用JSON.parse將它解析為對象
我不知道為什么但是返回像 JsonSerializer.Serialize("{\\"error\\":true}"); 這樣的對象。
而不是 JsonSerializer.Serialize("{'error':true}"); 或 JsonSerializer.Serialize("{error:true}");
解決我的問題
您可以使用in
運算符來檢查對象/數組上是否存在屬性。 它可以像"error" in data
一樣使用 // 將返回 true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.