Модификация на лету данных, отправленных с помощью jquery через ajax - PullRequest
0 голосов
/ 28 сентября 2010

Я использую jQuery.ajax() с каким-то конкретным data.Одним из них является albumid, который генерируется на стороне сервера, если пользователь решает не использовать один из своих альбомов.Проблема заключается в том, что если пользователь добавляет несколько фотографий в новый альбом, то вместо добавления всех фотографий в один альбом он создает несколько альбомов с одной фотографией в каждом.

Что в данный момент работает:

  • обновить альбом (используя тот, который уже есть у пользователя)
  • создать новый альбом
  • отправить обратно новый идентификатор альбома

Я пыталсяобновить поле имени альбома в соответствии с новым идентификатором альбома, отправленным обратно по событию success, полагая, что при следующем вызове ajax атрибут data: ({ 'albumid': album.val() )} будет тогда новым идентификатором альбома, но он будет продолжать использовать прежнее значение.

Я знаю, что эту проблему можно решить с помощью async: false, потому что в этом случае каждый вызов ajax будет использовать обновленное значение в поле имени альбома, но он полностью замораживает браузер.

Есть ли у вас какие-либо хитрости / предложения по этому вопросу?

Ура,Николя.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2010

Вы должны использовать новое значение, так как album.val () , кажется, не следует переоценивать с новым значением.

С jquery должно быть довольно легко получить новое значение альбомаfrom $ ("# hiddenId"). val ()

Учитывая, что полученный id хранится в созданном скрытом поле из запроса ajax.

0 голосов
/ 28 сентября 2010

Похоже, у вас есть состояние гонки. Без просмотра кода трудно сказать наверняка, но album.val (), вероятно, устанавливается один раз, когда код анализируется и не обрабатывается во время обработчика успеха.

Вы все еще можете использовать aync звонки, но вы должны делать их последовательно. Это называется шаблоном Active Object. Установите массив, содержащий вызовы ajax, и вызовите один. Каждый из них в обработчике успеха вызывает вызов следующего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...