Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Обработка полученного ajax ответа (https://javascript.ru/forum/events/43204-obrabotka-poluchennogo-ajax-otveta.html)

dts 26.11.2013 15:53

Обработка полученного ajax ответа
 
Добрый день

Код:

.content {
  display: none;
}

<div class="container">
  <div class="header">header</div>
  <div class="content">content</div>
</div>


Используется jquery скрипт show/hide.

Проблема при ajax обновлении.

Если до этого блок был раскрыт, то при обновлении он схлопывается.

Ответ приходит с блоком "content" display: none

По факту происходит удаление предмета из корзины магазина, поэтому подобное поведение выглядит неуместно.

Могу переписать скрипт с применением jquery cookie, чтобы можно было сохранить состояние.

Хотелось бы узнать, как можно проверить обновлен ли блок ?

Необходимо при получении ответа с блоком "content" display: none изменить его на display: block

Были мысли по поводу триггеров.

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

Спасибо

ksa 26.11.2013 16:07

Цитата:

Сообщение от dts
Необходимо при получении ответа с блоком "content" display: none изменить его на display: block

Так пусть сервер и шлет нормальный ответ. Зачем его еще и потом обрабатывать? :blink:

dts 26.11.2013 18:45

Цитата:

Сообщение от ksa (Сообщение 282925)
Так пусть сервер и шлет нормальный ответ. Зачем его еще и потом обрабатывать? :blink:

А как он будет его слать ?

Тогда при первой загрузке любой страницы, корзина будет раскрыта, а она должна быть изначально свернутой.

Rise 26.11.2013 18:55

Цитата:

Сообщение от dts (Сообщение 282916)
Задайте пожалуйста вектор направления, примеры реализации найду самостоятельно.

Приведите пожалуйста код, без кода одно направление...

dts 26.11.2013 19:27

Какой вам код привести ?
jquery show/hide или вас интересует backend ?

ksa 26.11.2013 19:37

Цитата:

Сообщение от dts
А как он будет его слать ?

Тогда при первой загрузке любой страницы, корзина будет раскрыта, а она должна быть изначально свернутой

Так пусть "знает" когда открывать, а когда закрывать. На то он и сервер. :)

dts 26.11.2013 19:49

Как он должен знать ?

Вы серьезно или просто троллите ?

ksa 26.11.2013 19:54

Как вы задолбали со своими комплексами... :D

Цитата:

Сообщение от dts
Как он должен знать ?

Млин, а как он тебе отвечает? Откуда он знает, что тебе нужно отвечать?

Прям не сервер, а всезнающая субстанция...

dts 26.11.2013 20:00

Цитата:

Сообщение от ksa (Сообщение 282991)
Млин, а как он тебе отвечает?

Откуда он знает, что тебе нужно отвечать?

http://javascript.ru/forum/282727-post4.html

Команда вызывается из колбека функции удаления товара.

ksa 26.11.2013 20:07

dts, так вот и пошли ему нужные сведения. Сервер пусть их обработает и ответит как нужно.

dts 26.11.2013 20:13

А не жирно на это целый запрос тратить ?

Я думал это на клиенте будет лучше сделать.

Да и пока спрашивал появилась мысль сделать обертку для общего контейнера и отмечать в нем состояние, попутно отмечая это в куки.

До этого пытался реализовать подобный сценарий, но внутри обновляемого контейнера.

ksa 26.11.2013 20:16

Цитата:

Сообщение от dts
А не жирно на это целый запрос тратить ?

Ты его и так уже делаешь... :D И получаешь, не совсем нужный тебе, ответ.

Цитата:

Сообщение от dts
Я думал это на клиенте будет лучше сделать.

Да, да... :D
Послать запрос серверу... Сформировать не нужный ответ... Послать его на клиент... Потом на клиенте его начать преобразовывать...
Это таки да - лучше, чем сразу прислать нужное! :D

ksa 26.11.2013 20:18

Цитата:

Сообщение от dts
Да и пока спрашивал появилась мысль сделать обертку для общего контейнера и отмечать в нем состояние, попутно отмечая это в куки.

Очередной подземный ход на чердак...

dts 26.11.2013 20:38

В ответе целый блок корзины для магазина.
Пример для демонстрации используется упрощенный.

Находясь на странице магазина разворачиваю блок с корзиной.
Закрываю вкладку браузера.
Открываю снова ту самую страницу.
Как блок должен узнать, что его до этого открывали ?

Состояние должно сохранятся.

Для этого думаю использовать cookie или localStorage.

Может вы изначально подумали, что блок при открытии подтягивается через ajax ?

ksa 26.11.2013 20:42

Цитата:

Сообщение от dts
Закрываю вкладку браузера.
Открываю снова ту самую страницу.
Как блок должен узнать, что его до этого открывали ?

Сколько нового сразу! :D
Комп выключаешь?

Цитата:

Сообщение от dts
Состояние должно сохранятся.
Для этого думаю использовать cookie или localStorage.

А если человек пересядет на другой комп?

dts 26.11.2013 20:52

Причем тут выключение ?
Сегодня вроде не пятница, а от вас целое множество язвительных реплик.

Ситуация рассматривается с точки зрения анонима.
Да и хранить это в базе нет смысла.

ksa 26.11.2013 20:59

Цитата:

Сообщение от dts
Причем тут выключение ?

Так ты все остальное перечислил... :D Остаётся только выключение и смена компа...

Просто интересно понять до куда собрался идти? Если только до закрытия вкладки, браузера и выключения компа - одно... Если дальше - уже х/з...

dts 26.11.2013 21:11

Так что в итоге, вы все еще считаете бредом использование контейнера для блока корзины и манипуляции на стороне клиента ?

Может существуют какие-то новые, кардинально отличающиеся технологии для реализации задуманного ?

Может чего-то не знаю.
Открыт к предложениям.

ksa 27.11.2013 08:37

Цитата:

Сообщение от dts
Так что в итоге, вы все еще считаете бредом использование контейнера для блока корзины и манипуляции на стороне клиента ?

Я не сторонник слова "бред"... Т.к. он бывает только у больных... :)

Скажу так - я не стал бы так делать. :no: Просто слал бы на сервер исчерпывающую информацию, а сервер, обработав ее, слал бы мне правильный ответ.
Т.о. клиент и сервер полностью отработали бы "свои деньги". Слать некие полуфабрикаты туда и сюда смысла не вижу...

И сам факт "был на странице" он такой расплывчатый... И все зависит до какой черты готов дойти разработчик. И до куда дойдет фантазия пользователя...
Т.ч. тут смотри сам.

SkyLight 30.11.2013 20:05

Почему бы просто не менять класс у блока-контейнера (.container) для показа/скрытия вашего блока? Тогда будет глубоко пофиг, что вам возвращает сервер - состояние хранится на клиенте и серверу о нем знать вобще не нужно.

.container.visible .content {display : block}


Как только блок .container получит еще и класс .visible, то блок .content станет видимым. Убрать класс - блок скроется.


Часовой пояс GMT +3, время: 08:03.