我试图使用jQuery来确定json数组中是否存在特定键。具体来说,如果我看到这个密钥,我知道我没有想要在页面上显示的对象从服务器返回。
我尝试使用的简单检查如下所示:
if (data.hasOwnProperty('Error - No records found in table')) {
alert('true');
}
从服务器返回的数组如下所示:
[{"Error - No records found in table": ""}]
完整代码:
var url = 'https://blahblah.com';
var postData = $('#BranchSpecials').serialize();
var spinnerBig = $('.loadingSpinner');
var getClearanceItems = $.ajax({
type: 'Post',
url: url,
xhrFields: {
withCredentials: true
},
crossDomain: true,
data: postData,
dataType: 'json',
beforeSend: function(xhr) {
spinnerBig.show();
}
});
getClearanceItems.done(function(data, jqXHR) {
var clearance = $("#clearance");
spinnerBig.hide();
clearance.empty();
if (data.hasOwnProperty('Error - No records found in table')) {
alert('true');
}
var items = [];
$.each(data, function(i, item) {
items.push('<div class="item-block"><a href="' + url + item.ProdLink + '"><img src="https://blahblah.com/Data/' + item.ProdImage + '" width="104" height="104"/></a><div class="item-meta"><p class="desc"><a href="' + url + item.ProdLink + '">' + item.ProductDesc + '</a></p><p class="itemID">Item #: <a href="' + url + item.ProdLink + '" class="uline">' + item.ProductID + '</a></p></div></div>');
});
clearance.append(items.join(''));
clearance.slick({
infinite: true,
slidesToShow: 4,
slidesToScroll: 4,
dots: true,
appendArrows: $('#controls'),
prevArrow: '<button type="button" class="btn btn-default"><i class="material-icons">chevron_left</i></button>',
nextArrow: '<button type="button" class="btn btn-default"><i class="material-icons">chevron_right</i></button>'
});
});
问题: 这个检查有什么问题?
答案 0 :(得分:1)
您正在检查为数组定义的属性而不是对象,如果数组包含单个对象,则从数组中获取第一个对象并检查
if(data[0].hasOwnProperty('Error - No records found in table'))
如果有多个元素,请使用 <{3>} @AmirPopovich 尝试其他答案。
答案 1 :(得分:0)
问题是数据是一个数组,你想对数组的项目进行检查。
使用Array.prototype.some确定数组中的任何对象是否包含错误的密钥。
var data = [{"Error - No records found in table": ""}];
if (data.some(function(item){ return item.hasOwnProperty('Error - No records found in table') })) {
alert('true');
}