Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.11.2013, 12:25
Аспирант
Отправить личное сообщение для Zhazhah Посмотреть профиль Найти все сообщения от Zhazhah
 
Регистрация: 27.11.2010
Сообщений: 48

Ajax запрос после выполнения всех итераций цикла
Здравствуйте, помогите пожалуйста с реализацией.

var fileList = $('#file_list');
$("#upload").click(function() {   
  fileList.find('li').each(function() {
    var item = this;
    // Здесь File API, каждая картинка отправляется на сервер
    // по отдельности, т.е каждая итерация это запрос

    // пример функции которая возвращает ответ от сервера.
   ...
    oncomplete: function(response) {
       $(item).removeClass('update').addClass('read');
       createPost();
    }
)};

function createPost() {
  if (!fileList.find('li').hasClass('update')) {
    // Последний запрос к серверу он должен выполниться только один раз.
  }
}


С первого взгляда все ок, но не ок, при большом кол-ве картинок происходит так что
if (!fileList.find('li').hasClass('update')) срабатывает не так как нужно...
Запрос на сервер отправляется больше одного раза

Последний раз редактировалось Zhazhah, 20.11.2013 в 12:49.
Ответить с цитированием
  #2 (permalink)  
Старый 20.11.2013, 13:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от Zhazhah
if (!fileList.find('li').hasClass('update')) срабатывает не так как нужно...
Он работает, как и написано в условии. Если тебе не так нужно - таки пиши как тебе действительно нужно...

Сообщение от Zhazhah
Запрос на сервер отправляется больше одного раза
Знать на тот момент в набор попадает более одного элемента...
Ответить с цитированием
  #3 (permalink)  
Старый 20.11.2013, 14:04
Аспирант
Отправить личное сообщение для Zhazhah Посмотреть профиль Найти все сообщения от Zhazhah
 
Регистрация: 27.11.2010
Сообщений: 48

Да именно, можно ли как то вызвать createPost после загрузки все картинок?
Что то ни чего в голову не идет
Ответить с цитированием
  #4 (permalink)  
Старый 20.11.2013, 14:20
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от Zhazhah
можно ли как то вызвать createPost после загрузки все картинок?
Да.
Ведь количество картинок всегда можно узнать. Так же можно определить индекс "очередной" картинки...
Останется сложить все воедино.
Ответить с цитированием
  #5 (permalink)  
Старый 20.11.2013, 17:13
Аспирант
Отправить личное сообщение для Zhazhah Посмотреть профиль Найти все сообщения от Zhazhah
 
Регистрация: 27.11.2010
Сообщений: 48

Почему то сразу не додумался, все очень просто)
Добавил в код:

var fileList = $('#file_list');
var itemCount = fileList.find('li').length;
var updateCount = 0;

$("#upload").click(function() {   
  fileList.find('li').each(function() {
    var item = this;
    // Здесь File API, каждая картинка отправляется на сервер
    // по отдельности, т.е каждая итерация это запрос

    // пример функции которая возвращает ответ от сервера.
   ...
    oncomplete: function(response) {
       updateCount++;
       $(item).removeClass('update').addClass('read');
       createPost();
    }
)};

function createPost() {
  if (!fileList.find('li').hasClass('update') &&
     updateCount == itemCount) {
    // Последний запрос к серверу он должен выполниться только один раз.
  }
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
backboneJS, дождаться выполнения всех AJAX запросов. anty Библиотеки/Тулкиты/Фреймворки 1 28.12.2011 04:30
Как отправить Ajax запрос от плагина Chrome к веб серверу? fedotxxl AJAX и COMET 0 29.11.2011 20:53
ajax запрос срабатывает только один раз из цикла.. SunYang AJAX и COMET 3 30.10.2011 16:01
После выполнения операции скрипт перестает работать HETmozgov jQuery 6 04.11.2010 18:06
не работает ajax запрос ЯРОСЛАВ jQuery 9 07.04.2010 22:31