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 に答える