Как перебрать данные json и показать их в заполнителе div с помощью jquery

0

У меня есть сценарий управления баннером. На странице действий процесс jquery post реализован следующим образом:

$.ajax({
  type: 'post',
  url: 'ajax/impressions.php',
  data: {placeholders: bannerPlaceholders.join(',')},
  success: function (response) {
    if(response) {
      for (var placeholderId in response) {
        var x = '<a id="banner-'+response[placeholderId]['banner_id']+'" class="banner-tracker" href="'+response[placeholderId]['href']+'" target="_blank">';   
        x += '<img alt="'+response[placeholderId]['href']+'" src="storage/'+response[placeholderId]['src']+'" />';
        x += '</a>';
        $('#banner-placeholder-'+placeholderId).html(x);                        
       }
     }
   }
});

и данные поступают следующим образом:
{"1":{"banner_id":"1","src":"banner125x125.gif","href":"http://stackoverflow.com"}}
И последний html-заполнитель вроде этого: <div id="banner-placeholder-1" class="banner-placeholder" style="width:125px;height:125px;border:1px solid grey;"></div>

Моя проблема: баннер не отображается на месте. Я не справлялся с тем, что делаю. Не могли бы вы мне помочь, как мне показать баннер в заполнителе?
С уважением.

  • 0
    Вы уверены, что получаете данные в виде массива в функции success ? Потому что то, что вы показываете, не является массивом.
  • 0
    В коде impression.php вот так: echo json_encode($banners);
Показать ещё 1 комментарий
Теги:
arrays

2 ответа

0

Похоже, вы пытаетесь установить html несуществующих div. В конце each блока вы устанавливаете $('#banner-placeholder-{id}').html -.html установит внутренний html этого div. Однако вы не увидите этого, потому что в вашем доме, вероятно, нет #banner-placeholder-3.

Попробуйте вместо этого добавить к существующему элементу на своей странице. Например, вы можете:

$('body').append(x)
  • 0
    Да, на моей странице нет div с именем #banner-placeholder-3 . Но я не понял $('body').append(x) . Извините, мой уровень для начинающих.
  • 0
    Вы пытаетесь добавить результаты на свою страницу, правильно? Этот HTML-код, который вы генерируете для x должен быть добавлен на страницу. Вызов .html для несуществующего элемента div ни к чему не приведет, поскольку jquery не найдет элемент div. Вместо этого вам нужно append - который добавляет HTML на страницу. Если, например, у вас есть контейнер с именем # banner-container, в который вы хотите добавить результаты, вы должны выполнить $('#banners-container').append(x) . Это добавит x в конец # баннеров-контейнера.
0

Я думаю, что это из banner-placeholder класса banner-placeholder, попробуйте удалить его:

$('#banner-placeholder-'+placeholderId).html(x).removeClass('banner-placeholder');

Если это не работает, прокомментируйте.

  • 0
    Это не работает. Потому что, когда я добавляю alert(response[placeholderId]['src'] в цикл for, он возвращает undefined . Я думаю, что есть проблема в цикле for.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню