У меня есть сценарий управления баннером. На странице действий процесс 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>
Моя проблема: баннер не отображается на месте. Я не справлялся с тем, что делаю. Не могли бы вы мне помочь, как мне показать баннер в заполнителе?
С уважением.
Похоже, вы пытаетесь установить html несуществующих div. В конце each
блока вы устанавливаете $('#banner-placeholder-{id}').html
-.html установит внутренний html этого div. Однако вы не увидите этого, потому что в вашем доме, вероятно, нет #banner-placeholder-3
.
Попробуйте вместо этого добавить к существующему элементу на своей странице. Например, вы можете:
$('body').append(x)
#banner-placeholder-3
. Но я не понял $('body').append(x)
. Извините, мой уровень для начинающих.
x
должен быть добавлен на страницу. Вызов .html для несуществующего элемента div ни к чему не приведет, поскольку jquery не найдет элемент div. Вместо этого вам нужно append
- который добавляет HTML на страницу. Если, например, у вас есть контейнер с именем # banner-container, в который вы хотите добавить результаты, вы должны выполнить $('#banners-container').append(x)
. Это добавит x
в конец # баннеров-контейнера.
Я думаю, что это из banner-placeholder
класса banner-placeholder
, попробуйте удалить его:
$('#banner-placeholder-'+placeholderId).html(x).removeClass('banner-placeholder');
Если это не работает, прокомментируйте.
alert(response[placeholderId]['src']
в цикл for, он возвращает undefined
. Я думаю, что есть проблема в цикле for.
success
? Потому что то, что вы показываете, не является массивом.echo json_encode($banners);