like-a-boss
@like-a-boss
Признайся,тебяТянетНаКодМужика,ты—программный гей

Как вывести каждый объект в цикле в уникальный контейнер?

Добрый вечер,
Есть вот такой цикл. В нём мне нужно получать по каждому посту картинку, используя апи другого сайта. Делать это я хочу асинхронно с помощью аджакса, иначе это сильно тормозит загрузку страницы и меня не устраивает^^)
Оно то получает, то что мне нужно, но я не могу придумать(из-за своих чуть больше, чем никаких познаний js) как это помещать в див, который у меня в цикле, да так чтобы при каждой итерации объект попадал в "свой" див, а не в первый

<?php while ( $wp_query->have_posts() ) : $wp_query->the_post();
$title = $post->post_title;?>
<div id="qwe">этот див должен быть в цикле</div>
<script>
$.ajax({
  url: 'http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=<?php echo urlencode($title);?>&api_key=2b35547bd5675d8ecb2b911ee9901f59&format=json',
  success: function(data) {
$('#qwe').append("<img src=\"" + data.artist.image[2]["#text"] + "\">"); // вот тут проблема, 
//нужно, наверное, каждый объект класть в свой контейнер с уникальным айди типа qwe1,qwe2, ...
//потому как таким образом они все пытаются попасть в первый контейнер на странице.
//Как это сделать? Чтобы картинки, конечно, соответствовали своим постам, а не рандом
  }
})
</script>
<?php endwhile;?>


Не будучи специалистом, уверен, что это неверный подход, однако, меня вроде как устраивает)
Помогите с выводом на js, пожалуйста
  • Вопрос задан
  • 2678 просмотров
Решения вопроса 1
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Вы ведь не собираетесь вставлять N блоков с одинаковым id?))
Зачем вам N скриптов?

Цикл начался
<div class="artist" data-container="artist" data-title="<?php echo urlencode($title);?>">...</div>
Цикл закончился
<script>
var $Artist = function () {
	var url = 'http://ws.audioscrobbler.com/2.0/',
		options = {
			method: 'artist.getinfo',
			api_key: '2b35547bd5675d8ecb2b911ee9901f59',
			format: 'json'
		};

	$('[data-container="artist"]').each(function () {
		var $item = $(this);

		$.ajax({
			url: url + '?' + $.param(options) + '&artist=' + $item.data('title'),
			success: function(data) {
				$item.append($('<img>').attr('src', data.artist.image[2]['#text']));
			}
		})
	});
}();
</script>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ну если так же по простому, то пилите в сторону createElement и прибавляйте ему 1,2,3... как значение счетчика в этом же цикле
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы