Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.07.2016, 14:54
Интересующийся
Отправить личное сообщение для unsafePtr Посмотреть профиль Найти все сообщения от unsafePtr
 
Регистрация: 05.07.2016
Сообщений: 12

Дублирование Ajax запроса
Столкнулся с проблемой, что был продублирован ajax запрос. Идея следующая. При клике на элемент на странице подгрузить новые элементы с сервера в json формате, к тому же каждый элемент содержит изображение, его мы то же подгружаем через ajax. Так вот, не понятно по чему запрос на получение последнего изображения дублируются. Так же не получается не получается нормально настроить анимацию вывода.

Код выглядит следующим образом:
$(function () {
            'use strict';

            var getItems = $('#getItems');

            getItems.click(uploadItems);

            var page = 1;
            function uploadItems() {
                $.ajax({
                    type: 'GET',
                    url: '/Home/GetProductDetailsAjax?page=' + page,
                    success: updateResult
                });
            }

            function updateResult(vm) {
                page++;
                var target = $('#result');
                for (var i = 0; i < vm.length; i++) {
                    target.append(
                    '<li>' +
                        '<a href="details.html"><img id="'+ vm[i].productId +'" class="img-responsive" /></a>' +
                        '<div class="special-info grid_1 simpleCart_shelfItem">' +
                            '<h5>'+ vm[i].name +'</h5>' +
                            '<div class="item_add"><span class="item_price"><h6>ONLY $' + vm[i].price + '</h6></span></div>' +
                            '<div class="item_add"><span class="item_price"><a href="#">add to cart</a></span></div>' +
                        '</div>' +
                    '</li>'
                    );

                    getImage(vm[i].productId);
                }

            }

            function getImage(productId) {
                var imageUrl = '/Photo/RenderImage?imageId=' + productId;
                $.ajax({
                    type: 'GET',
                    url: imageUrl,
                    processData: false,
                    success: function () {
                        $('#' + productId).attr('src', imageUrl).fadeIn();
                    }
                })
            }
})();

Последний раз редактировалось unsafePtr, 17.07.2016 в 15:13.
Ответить с цитированием
  #2 (permalink)  
Старый 17.07.2016, 15:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

unsafePtr,
в строке 47 что?
Ответить с цитированием
  #3 (permalink)  
Старый 17.07.2016, 15:15
Интересующийся
Отправить личное сообщение для unsafePtr Посмотреть профиль Найти все сообщения от unsafePtr
 
Регистрация: 05.07.2016
Сообщений: 12

Прошу прощения, когда копировал, пропустил первую строчку, поправил.
Ответить с цитированием
  #4 (permalink)  
Старый 17.07.2016, 15:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

unsafePtr,
теоретически все картинки должно дублировать строки 41 и 44 ...
Ответить с цитированием
  #5 (permalink)  
Старый 17.07.2016, 15:37
Интересующийся
Отправить личное сообщение для unsafePtr Посмотреть профиль Найти все сообщения от unsafePtr
 
Регистрация: 05.07.2016
Сообщений: 12

Почему? Мы же должны как то подгрузить наши изображения, или есть более универсальный способ? Не совсем понял в чём именно проблема, я совсем начинающий в jQuery.
Ответить с цитированием
  #6 (permalink)  
Старый 17.07.2016, 15:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от unsafePtr
Мы же должны как то подгрузить наши изображения
а зачем?
function updateResult(vm) {
                page++;
                var target = $('#result');
                for (var i = 0; i < vm.length; i++) {
                    var imageUrl = '/Photo/RenderImage?imageId=' + vm[i].productId;
                    target.append(
                    '<li>' +
                        '<a href="details.html"><img id="'+ vm[i].productId +'" class="img-responsive" src="'+imageUrl+'"/></a>' +
                        '<div class="special-info grid_1 simpleCart_shelfItem">' +
                            '<h5>'+ vm[i].name +'</h5>' +
                            '<div class="item_add"><span class="item_price"><h6>ONLY $' + vm[i].price + '</h6></span></div>' +
                            '<div class="item_add"><span class="item_price"><a href="#">add to cart</a></span></div>' +
                        '</div>' +
                    '</li>'
                    );


                }

            }
Ответить с цитированием
  #7 (permalink)  
Старый 17.07.2016, 16:09
Интересующийся
Отправить личное сообщение для unsafePtr Посмотреть профиль Найти все сообщения от unsafePtr
 
Регистрация: 05.07.2016
Сообщений: 12

Спасибо, а что на счёт анимации? Как в данном случае с ней быть? Создать массив и подождать пока все элементы загрузятся, а потом по одному с задержкой отобразить? Есть ли у Вас рабочий пример?
Ответить с цитированием
  #8 (permalink)  
Старый 17.07.2016, 16:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

unsafePtr,
добавьте в строку 19
$('.img-responsive').fadeIn();
Ответить с цитированием
  #9 (permalink)  
Старый 17.07.2016, 16:34
Интересующийся
Отправить личное сообщение для unsafePtr Посмотреть профиль Найти все сообщения от unsafePtr
 
Регистрация: 05.07.2016
Сообщений: 12

Мистика какая-то, если уж мы делаем только один ajax запрос, то откуда тогда:

Ajax запрос на странице у меня только в одном месте, больше нигде это фото получить не пытаюсь.
Я имею ввиду отдельный GET запрос на получение нашего изображения

Последний раз редактировалось unsafePtr, 17.07.2016 в 16:38.
Ответить с цитированием
  #10 (permalink)  
Старый 17.07.2016, 16:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

unsafePtr,
а как иначе получить изображение если не запрашивать сервер ???
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка запроса ajax Jack Sparrow AJAX и COMET 1 24.11.2012 13:29
Обработка данных во время AJAX запроса user783 AJAX и COMET 5 09.12.2011 03:24
Как приостановить выполнение скрипта до получения результата AJAX запроса? Хиросим AJAX и COMET 9 31.10.2011 10:56
Проблема с событиями после ajax запроса Mirgorod AJAX и COMET 5 12.06.2010 18:24
Сохранение результата ajax запроса после нажатия 'back' gregOlsen AJAX и COMET 5 18.11.2009 12:23