Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Проблема с одновременным заполнением нескольких полей заказа #879

Open
AlexSus opened this issue Jun 1, 2023 · 0 comments
Labels

Comments

@AlexSus
Copy link

AlexSus commented Jun 1, 2023

Сообщение об ошибке / Error message

Есть проблема, если одномоментно заполнить несколько полей в форме заказа (получатель, телефон, индекс, город, улица, регион и.т.д.)
Такое может случаться, например, при использовании сторонних доставок (Почта Росиии, СДЭК), которые при автокомплите города, одновременно заполняют несколько полей: поля города, индекса и области, либо же это вполне может произойти и просто, если соединение с интернетом нестабильно и одновременно на сервер уйдут несколько запросов, возможно такое может происходить при автозаполнении сохраненных полей браузером, типа подстановки имени и телефона. Когда происходит одновременно несколько запросов к order/add - видимо из-за конкуренции в итоге сохранится лишь одно, максимум 2 поля. Остальное перезапишется предыдущим значением.

Резюме / Summary

Скорей всего проблема в том, что при запросе к order/add перезаписывается вся сессия и получается тот запрос, который выполнился последним, он затрет значения параллельных запросов и поля не сохранятся.

Шаг для воспроизведения / Step to play

Я смог воспроизвести проблему на демо сайте https://minishop2.com/cart таким кодом в консоли браузера:

$(miniShop2.Order.order + ' [name="city"]').val('Москва').change();
$(miniShop2.Order.order + ' [name="index"]').val('606000').change();
$(miniShop2.Order.order + ' [name="street"]').val('Арбат').change();
$(miniShop2.Order.order + ' [name="region"]').val('Московская область').change();

Наблюдаемое поведение / Observed behavior

Мы увидим в панели сетевых запросов, что ушло 4 запроса, все они вернули success.
Обновляем страницу и видим, что в лучшем случае будет заполнено лишь одно-два поля, а остальные пустые, т.к. перезатерлись.

Ожидаемое поведение / Expected behavior

Хотелось бы, чтобы все поля правильно сохранялись в заказ, независимо от других запросов, не мешая друг другу.

Environment

Проверялось на версии https://minishop2.com/cart и на сайте с Minishop2 2.4.18-pl и modx 2.7.1

Может уважаемое сообщество разработчиков подскажет, как с этим можно бороться?
Сделать какую-то очередь запросов, чтобы они шли один за другим, но не просто по setTimeout, а по факту ответа.

@AlexSus AlexSus added the bug label Jun 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant