Короткий ответ

Гонки кликов, двойные запросы, JS events, session/cart state, API idempotency и UI feedback. Разбираем практический порядок работ, риски, стоимость и то, как принять результат без новых проблем.

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

Почему товар «иногда» не добавляется

СимптомЧто проверить
XHR не ушёлJS handler / duplicate listeners
403session/CSRF/WAF
200 success=falsevalidation/options
После reload корзина стараяsession/cache
Только товар с опциямиmsOptionsPrice/options mapping
Двойной кликduplicate request / debounce

Поймать AJAX-ошибку в браузере

JAVASCRIPT
// DevTools Console: временно логируем fetch
const oldFetch = window.fetch;
window.fetch = async (...args) => {
  console.log('fetch request', ...args);
  const r = await oldFetch(...args);
  console.log('fetch response', r.status, r.url);
  return r;
};

Смотреть MODX log во время добавления

BASH
tail -f /path/to/site/core/cache/logs/error.log

Проверяйте один конкретный товар

Если сбой зависит от опций, артикула или остатка, сравните Request Payload успешного и неуспешного добавления. Это быстрее, чем переписывать весь frontend-код корзины.

Как проверить результат

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

Связанные материалы