检查Json数组中是否存在特定密钥

时间:2016-05-24 13:20:01

标签: jquery json

我试图使用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>'
 });
});

问题: 这个检查有什么问题?

2 个答案:

答案 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');
 }