从json获取数据并检查数组中是否可用

时间:2012-09-11 06:56:24

标签: jquery ajax arrays json

我有以下代码来使用ajax获取json响应。从响应我采取“prodId”。 当页面加载和每个响应将包含不同的“prodId”时,更多响应将进入页面。我需要检查“prodId”是否已收到。 我在页面中已经有了一些div,上面有上面提到的prodId。

我是处理数组的新手。有一点要记住,所有json响应都在页面加载中。因此,在得到第一个响应后,我需要检查任何重复的响应即将到来,应该避免它。请帮帮我

$.ajax({
  type: "GET",
  dataType: "jsonp",

success: function(data){
  prodId = data.prodID;
  //populate this data in page
});

1 个答案:

答案 0 :(得分:1)

向元素添加内容,以帮助您根据prodID识别它们。元素ID在这里非常适合,但如果您正在使用其他内容,只需添加另一个类。

newElement.addClass('prod-' + data.prodID);

然后在决定是否向DOM添加新元素时,只需检查:

if($('.prod-' + data.prodID).length == 0) { ... }

你当然可以创建一个本地字典并在内存中而不是在DOM中执行查找:

var addedProducts = {};

每次向DOM添加元素时:

addedProducts[data.prodID] = newElement;

决定是否向DOM添加元素时:

if(!addedProducts.hasOwnProperty(data.prodID)) { ... }

完整的代码可能如下所示:

success: function(data){
  prodId = data.prodID;

  if($('.prod-' + prodId).length == 0) {
     var newElement = $('<div/>').html(some content as determined by data);
     newElement.addClass('prod-' + prodId);
     newElement.appendTo('body');
  }
});

当然,如何创建元素以及添加它们的位置取决于您想要实现的目标。我相信你已经在“填充页面中的数据”评论中找到了这个。您需要添加的只是addClass调用和包装if