У Вас другая проблема. Товар добавляется в корзину и (4,5) вполне выполняются. Т.е. сервер обратно возвращает информацию, что теперь в корзине стало столько-то товара на такую-то сумму. До первой перезагрузки страницы. После чего случайным образом корзина очищается. Или не очищается. Чаще первое. И происходит это только когда клиент не зарегистрирован, т.е. для хранения содержимого корзины используются переменные сессии.
Ух, какая сказочная и офигительная задачка была!
И ведь действительно проблема проявлялась ТОЛЬКО при ЧПУ.
Проблема: жмем "купить", видим в аякс-корзине появление товара, перезагружаем страницу, в аякс-корзине пусто, в корзине тоже.
Причем проблема случайна, т.е. может случиться, а может и нет.
Поиск осложнялся тем, что я хоть и создал для удобства клон сайта клиента у себя на сервере, но когда находил время заняться - корзина упорно не хотела глючить.
В общем, проблему давала редчайшая совокупность факторов:
1. у меня в ЧПУ-модуле сделано так, что ссылка (если она не файл и не заканчивается на '.html') должна иметь в конце слэш. Если не имеет, то происходит редирект-301 на такую же ссылку, но со слэшем в конце. Кстати, до сих пор не понимаю надобности в таком редиректе.
2. Вывод штатного и ОЧЕНЬ редко меняемого всплывающего окошечка "товар добавлен в корзину" заменен на нечто другое, которое кроме остальных отличий пытается подгрузить файл /images/loader.gif
3. (главное!) файла /images/loader.gif на сервере нет, ну вот так получилось, т.е. для модуля ЧПУ этот запрос не файл, который надо отдать, а ссылка, которую надо обработать. Она и обрабатывается путем редиректа на /images/loader.gif/ (в конце появляется слэш).
4. Т.е. в рамках одной сессии сервер получает практически одновременно сразу два запроса - запрос на добавление товара и запрос на вывод страницы /images/loader.gif/. Причем каждый раз с чуть разным временнЫм смещением (миллисекунды).
5. По любому при обращении к серверу клиента без регистрации происходит какая-то работа с массивом $_SESSION. Я не стал дальше копаться, добираясь до совсем уж конкретики. Явно параллельно-одновременная работа с $_SESSION ни к чему хорошему не приведет. Как, собственно, и с любым другим массивом. Т.е. либо повезет, либо нет. В зависимости от того самого "смещения в миллисекунды" из предыдущего пункта. Что и получалось.
Решение проще простого - если меняем функцию индикации аякс-загрузки в корзину, то надо бы озадачиться обязательным наличием всех используемых в новой функции ресурсов (обычно картинок) на сервере. Это не единственное решение, но самое правильное.