Похожие записи:
- Как улучшить навыки программирования?
- Вычитание значения из соседней ячейки, если значение ячейки совпадает с идентификатором.
- Как и куда добавить условие IF в моем коде?
- Использование лямбда для создания произвольной оболочки класса вокруг некоторого объекта типа T
- Функция JS для инициализации свойств
Pavll
Добрый день!
При нажатии на «Добавить в корзину», во-первых, ссылка «Добавить в корзину» должна исчезнуть, во-вторых, напротив ссылки «В корзине» вместо слова «пусто» должна появляться цифра.
Главный вопрос — почему ни того, ни другого не происходит?
Нажимаю «Добавить в корзину», на странице ничего не меняется, и в консоли файрбага появляется:
Скрипт main.js сейчас выглядит так:
Файл leftcolumn.tpl:
Файл header.tpl:
Файл product.tpl:
Файл ProductController.php:
Ошибок, кроме одной в консоли Хрома, сейчас нигде не выводится. Сообщение о ней появляется на всех страницах браузера:
Как определить, почему не работает код, так как надо?
При помощи отладочной функции
определил, что в файл ProductController.php приходит значение идентификатора выбранного продукта в переменную $itemId. Такая же переменная есть и в файле main.js, которая приходит в функцию addToCart(itemId) и хотелось бы определить, что приходит в эту функцию, но, как это сделать я не знаю (это же не php код и функция d() тут не работает). Также, хотелось бы определить, что приходит в строку:
в переменную $cartCntItems (и приходит ли, что-то?), но, как это сделать не знаю.
Вкладка Sourses при нажатии на «Добавить в корзину»:
Вкладка Network при нажатии на «Добавить в корзину»:
VHS
При выполнении запроса со стороны сервера приходит ответ. На вкладке network смотри док, который приходит в ответ на запрос (тип xhr, видимо 12/ это он). Нажми на него и посмотри текст ответа. Вариантов громадное количество, посмотри что возвращается. А еще лучше измени js на
И смотри приходящие данные в консоли. Если это не json, в чем я уверен на 99%, то смотри что отдает сервер.
silicoid
смотрите туда.
если у вас уходит всё в точности, а товар не добавляется, значит скорее всего что-то на серверной стороне.
но надо смотреть работу скрипта живьём, иначе это сродни проведению операции по телефону
Pavll
При выполнении запроса со стороны сервера приходит ответ. На вкладке network смотри док, который приходит в ответ на запрос (тип xhr, видимо 12/ это он). Нажми на него и посмотри текст ответа. Вариантов громадное количество, посмотри что возвращается. А еще лучше измени js на
И смотри приходящие данные в консоли. Если это не json, в чем я уверен на 99%, то смотри что отдает сервер.
При нажатии на 12/ на вкладке Network — Preview появляется:
Это контент другого сайта (bitrix.mini), не имеющего отношения к тому, о котором создана тема! Каким-то образом данные другого сайта попадают в этот. Просто, я два разных сайта: myshop.local (о котором сейчас речь) и другой — bitrix.mini расположил в одной директории:
При нажатии на 12/ на вкладке Network — Headers появляется:
При нажатии на 12/ на вкладке Network — Cookies появляется:
При нажатии на 12/ на вкладке Network — Response появляется:
Видите ли Вы ошибку? может, ещё, какие-либо вкладки, файлы стоит посмотреть?
ArbNet
Вот вам и Bitrix хвалёный 😂
SeVlad
Вот вам и Bitrix хвалёный 😂
Не то что твоя нерождённая ламборджинья
silicoid
Смотрите. Обычно алгоритм поиска проблем с аяксом следующий
1. Отключаете любое кэширование
2. оставляете только xhr и очищаете все логи дебагера, включаете все сообщения в консоли
3. смотрите консоль нет ли каких ошибок с яваскриптом
4. производите действие. Которое должно привести к аяксовому запросу.
5. обращаетесь обратно к консоли. смотрите. Нет ли чего интересного (ошибок яваскрипта, сообщений от самого скрипта, выполнившего запрос)
6. если есть — изучаете вопрос, штопаете. Если нет открываете вкладку сеть
7. смотрите содержимое запроса. Что он передал на сервер (закладка «заголовки» и «запрс» ) и что он получил от сервера (закладка «ответ»)
7а. запрос должен быть вида (адрес: Вашсайт.ru/путь/до/скрипта/обработчика.php , + запрос постом, в котором указываются параметры товара ) на что сайт возвращает джейсон с параметрами корзины.
8. проверяете правильный ли адрес, на который уходят данные (бывает так, что дергается другой скрипт)
9. Проверяете полноту отправляемых клиентом данных и подпись (если она используется)
10. Проверяете ответ сервера.
11. если сервер обрабатывает запрос, но не отправляет валидные данные, то скорее всего в отправляемый контент влезает какой-то мусор, от варнинга, до лишнего пробела
12. это проверяется очень просто. при релоаде страницы товар должен быть в корзине. Это говорит о том. что запрос с клиента на сервер поступает, но в обратную сторону идет битый джейсон.
13. если запрос из п.9 валидный, а товар все-равно в корзине не появляется, значит где-то ошибка в пхп скрипте и надо копать его.
Pavll
Смотрите. Обычно алгоритм поиска проблем с аяксом следующий
1. Отключаете любое кэширование
2. оставляете только xhr и очищаете все логи дебагера, включаете все сообщения в консоли
3. смотрите консоль нет ли каких ошибок с яваскриптом
4. производите действие. Которое должно привести к аяксовому запросу.
5. обращаетесь обратно к консоли. смотрите. Нет ли чего интересного (ошибок яваскрипта, сообщений от самого скрипта, выполнившего запрос)
6. если есть — изучаете вопрос, штопаете. Если нет открываете вкладку сеть
7. смотрите содержимое запроса. Что он передал на сервер (закладка «заголовки» и «запрс» ) и что он получил от сервера (закладка «ответ»)
7а. запрос должен быть вида (адрес: Вашсайт.ru/путь/до/скрипта/обработчика.php , + запрос постом, в котором указываются параметры товара ) на что сайт возвращает джейсон с параметрами корзины.
8. проверяете правильный ли адрес, на который уходят данные (бывает так, что дергается другой скрипт)
9. Проверяете полноту отправляемых клиентом данных и подпись (если она используется)
10. Проверяете ответ сервера.
11. если сервер обрабатывает запрос, но не отправляет валидные данные, то скорее всего в отправляемый контент влезает какой-то мусор, от варнинга, до лишнего пробела
12. это проверяется очень просто. при релоаде страницы товар должен быть в корзине. Это говорит о том. что запрос с клиента на сервер поступает, но в обратную сторону идет битый джейсон.
13. если запрос из п.9 валидный, а товар все-равно в корзине не появляется, значит где-то ошибка в пхп скрипте и надо копать его.
Спасибо, конечно, но похоже, приходят данные с другого сайта, который расположен в этой же директории (При нажатии на 12/ на вкладке Network — Preview, как я выше писал). Не пойму, почему так происходит?
silicoid
Спасибо, конечно, но похоже, приходят данные с другого сайта, который расположен в этой же директории (При нажатии на 12/ на вкладке Network — Preview, как я выше писал). Не пойму, почему так происходит?
.htaccess смотрите или конфигурацию apache/nginx
Pavll
Последние действия… Как я уже писал выше, папка с моим сайтом находится в директории C:OSPaneldomainstestwwwmyshop.local Так вот, файл index.php лежит в этой же директории C:OSPaneldomainstestwwwindex.php (ранее я об этом не писал). Файл index.php сейчас пуст, но эта пустота отображается, если нажать в Network 12/ на вкладке Network — Preview, как писалось выше. Если этот файл удалить, то в Network будет вот, что:
То есть, возможно дело не скриптах, а я, что-то напутал в путях. Но что?
Файл htaccess, который лежит в папке со всеми сайтами:
Тоже, файл htaccess, который лежит в сайте myshop.local, о котором и речь:
Файл index.php, тоже который в сайте myshop.local:
Не с путями ли, где-то, ошибка?
VHS
отправь запрос по полному URL, что будет?
Если сомневаешься в путях, пропиши в инклюдах вывод имени текущего файла и сравни результат со своими ожиданиями.
Насколько детально не делай выкладки, но разбираться в этой каше по скринам врядли кто-то будет, сам ты это сделаешь куда быстрее.