Как инициировать обновление страницы в бэкенд
В документации описано как с можно программно изменить статус заказа. Все хорошо, если статус меняется у заказа, который не открыт в данный момент на странице бэкенда. А как бить если обработка именно текущего заказа? Если это делать через интерфейс, то страница перерисовывается. Отсюда вопрос : как из скрипта, который меняет статус текущего заказа запустить обновление и экрана?
3 ответа
Если вы принудительно будете обновлять страницу, на которой пользователь пытается что-то делать, это будет не слишком дружелюбно. Значит, надо либо спросить о необходимости обновления страницы, либо хотя бы предупредить, чтобы у пользователя было время осознать, что сейчас произойдёт. В любом случае, прежде чем страница обновится, потребуется дополнительное действие со стороны пользователя: разрешение или подтверждение, что он всё понял.
С учётом этого было бы логично отслеживать на странице любые критичные для вас действия пользователи средствами JavaScript, например, попытки отправить данные на сервер через отправку формы или с помощью AJAX-запроса. Если такая попытка выполняется в тот момент, когда статус заказа на сервере уже изменился, можно показывать пользователю то самое предупреждение. И завершать отправку данных на сервер только в случае согласия (если есть вариант не согласиться) или после подтверждения (пользователь прочитал, осознал и готов к последствиям).
Вопрос по другой ситуации. Находясь на странице заказа можно изменить его статус нажав соответствующую клавишу. Например заказ из статуса "новый" может перейти в статус "подтверждён" по соответствующей клавише и при этом обновится экран. А теперь предположим что есть плагин, у которого тоже есть своя клавиша на этом же экране, при нажатии на которую производится некое действие внутреннее, а затем заказ нужно перевести в другой статус. Ситуация аналогична штатной только клавиша пользовательская.
Спрашивать пользователя в этом случае не о чем. Опять же, когда штатно меняется статус заказа, если в это же время он открыт в окне у другого администратора, то его ведь не спрашивают можно или нет? он просто оказывается перед фактом. что заказ был изменён в фоне.
Насколько я понимаю, вам надо время от времени опрашивать сервер JavaScript-кодом и в зависимости от результата обновлять или не обновлять страницу бекенда. Какие конкретно у вас сложности в реализации такого механизма?