Добрый день!
При попытке нажать на ссылку "Добавить в корзину", текст "Добавить в корзину" должен исчезать, а напротив ссылки "В корзине" должно появляться количество товара в корзине. Ни того, ни другого не происходит.
Ошибка в консоли Хрома появляется сразу, когда попадаешь на главную страницу сайта и никуда не исчезает, на какую бы страницу не переходил. Насколько понимаю, не подключается скрипт jquery-3.5.1.min.js и созданный скрипт main.js.
В консоли эта ошибка выглядит так:
Эти скрипты подключаются в шаблоне header.tpl, который выглядит так:
Phpshtorm не показывает, что эти файлы не найдены... Они находятся в следующей директории:
Файл main.js:
Когда находишься на странице конкретного товара и нажимаешь "Добавить в корзину", то к вышеупомянутой ошибке в консоли добавляется ещё одна: Uncaught SyntaxError: Unexpected token '<'
Но тэги '<' открывающий и '>' закрывающий существуют в коде.
Если тут нажать на ?controller=product&id=12:58, то появится такое окно:
Файл product.tpl:
Ещё файл CartController.php:
Помогите, пожалуйста, разобраться для начала с тем, почему не подключаются скрипты: jquery-3.5.1.min.js и main.js?
При попытке нажать на ссылку "Добавить в корзину", текст "Добавить в корзину" должен исчезать, а напротив ссылки "В корзине" должно появляться количество товара в корзине. Ни того, ни другого не происходит.
Ошибка в консоли Хрома появляется сразу, когда попадаешь на главную страницу сайта и никуда не исчезает, на какую бы страницу не переходил. Насколько понимаю, не подключается скрипт jquery-3.5.1.min.js и созданный скрипт main.js.
В консоли эта ошибка выглядит так:
Эти скрипты подключаются в шаблоне header.tpl, который выглядит так:
HTML:
<html>
<head>
<title>{$pageTitle}</title>
<link rel="stylesheet" href="{$TemplateWebPath}css/main.css" type="text/css"/>
<script src="/www/js/jquery-3.5.1.min.js" type="text/javascript"></script>
<script src="/www/js/main.js" type="text/javascript"></script>
</head>
<body>
<div id="header">
<h1>my shop - интернет магазин</h1>
</div>
{include file='leftcolumn.tpl'}
<div id="centerColumn">
Файл main.js:
JavaScript:
/**
* Функция добавления товара в корзину
*
* @param integer itemId ID продукта
* @return в случае успеха обновятся данные корзины на странице
*/
function addToCart(itemId) {
console.log("js - addToCart()");
$.ajax({
type: 'POST',
async: true,
url: "cart/addtocart" + itemId + '/',
dataType: 'json',
success: function (data) {
if(data['success']){
$('#cartCntItems').html(data['cntItems']);
$('#addCart_'+ itemId).hide();
$('#removeCart_'+ itemId).show();
}
}
});
}
Но тэги '<' открывающий и '>' закрывающий существуют в коде.
Если тут нажать на ?controller=product&id=12:58, то появится такое окно:
Файл product.tpl:
HTML:
{* страница продукта*}
<h3>{$rsProduct['name']}</h3>
<img width="575" src="../www/images/products/{$rsProduct['image']}">
Стоимость: {$rsProduct['price']}
<a id="addCart_{$item['id']}" alt="Добавить в корзину" onclick="addToCart({$item['id']}); return false;" href="#">Добавить в корзину</a>
<p> Описание <br />{$rsProduct['description']}</p>
PHP:
<?php
/**
* cartController.php
*
* Контроллер работы с корзиной (/cart/)
*
*/
// подключаем модели
include_once '../models/CategoriesModel.php';
include_once '../models/ProductsModel.php';
/**
* Добавление продукта в корзину
*
* @param integer id GET параметр - ID добавляемого продукта
* @return json информация об операции (успех, кол-во элементов в корзине)
*/
function addtocartAction() {
$itemId = isset($_GET['id']) ? intval($_GET['id']) : null;
if(! $itemId) return false;
$resData = array();
// если значение не найдено, то добавляем
if(isset($_SESSION['cart']) && array_search($itemId, $_SESSION['cart']) === false) {
$_SESSION['cart'][] = $itemId;
$resData['cntItems'] = count($_SESSION['cart']);
$resData['success'] = 1;
} else {
$resData['success'] = 0;
}
echo json_encode($resData);
}