Глюки в клиентском приложении на EXT3.3.1

Уже как минимум один клиент хочет высказать мне за функциональность в EXT3 которая толком не работает. Оказывается, что такая примитивная вещь, как изменение данных после редактирования ячейки, то есть обработчик JS-события «afteredit» для таблицы, работал некорректно. И было замечено это совершенно недавно, то есть, можно сказать случайно.

Проблема в том, что при выполнении record.set( «field», value) ext выполняет ajax-запрос с обновлением данных. В то же время, в событии afteredit запретить дальнейшее выполнение, то есть прохождение запроса, нет необходимости. Вот и получается, если вы выполнили некое преобразование (например привели в проценты) какую-то величину в JS, нет уверенности в том. что она будет верно записана в базу, так как происходит два конкурирующих по времени AJAX запроса.

Самый смех, что в разных браузерах эта вещь работает по разному, вот и получилось, что в Chrome — вылазит ошибка, которой в Firefox —  нет.

А так как у меня в приложении была достаточно сложная логика, то эти запросы еще и «перекрывались» на MySQL сервере (простой MyISAM без LOCK/триггеров). А это вызывало просто удивительные глюки. Например сами собой добавлялись записи, load запросы выдавали просто ерунду, так как ID отдаваемые сервером начинали дублироваться.

Конечно заказчик не удовлетворен, я и сам, честно говоря, вчера был в шоке. Но вроде решил проблему, уменьшив нагрузку на сервер, разделив функциональность, забрав afteredit где он изменял значение. Вроде работает. Но, конечно, неприятно.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *