0

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

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

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

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

1 回答 1

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.

于 2012-09-11T06:59:58.237 回答