Добрый день!
Создаю интернет-магазин по видеоуроку. Дошёл до раздела создания корзины и занесения туда товара. При нажатии на "Добавить в корзину" на странице определённого товара на странице должно отображаться прибавление в корзине, но этого не происходит. На страницах браузера нигде не выводятся на экран ошибки, ни на одной из страниц. Ошибки есть в консоли. Одна из которых (Uncaught SyntaxError: Unexpected token '<')там появляется начиная с главной страницы и на других страницах не исчезает.
Так выглядят вкладки Console и Network в Хроме:
Если нажать в консоли на ссылку файла с ошибкой (
jquery-3.5.1.min.js или main.js), то происходит переход на вкладку Sourses и в обоих случаях появляется указание на подчёркнутый текст
<!DOCTYPE html>:
Вторая ошибка возникает, только на странице определённого товара, когда нажимаешь "Добавить в корзину" и в консоли выглядит так:
Если нажать в консоли на ссылку файла с ошибкой ?controller=product&id=3:47, то происходит переход на вкладку Sourses и появляется:
Некоторые файлы, которые создавал в последнее время:
Файл
CartController.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);
}
Файл
header.tpl:
<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">
Файл
leftcolumn.tpl:
{* левый столбец *}
<div id="leftColumn">
<div id="leftMenu">
<div class="menuCaption">Меню:</div>
{foreach $rsCategories as $item}
<a href="/?controller=category&id={$item['id']}">{$item['name']}</a><br />
{if isset($item['children'])}
{foreach $item['children'] as $itemChild}
--<a href="?controller=category&id={$itemChild['id']}">{$itemChild['name']}</a><br />
{/foreach}
{/if}
{/foreach}
</div>
<div class="menuCaption">Корзина</div>
<a href="/cart/" title="Перейти в корзину">В корзине</a>
<span id="cartCntItems">
{if $cartCntItems > 0}{$cartCntItems}{else}пусто{/if}
</span>
</div>
Файл
product.tpl:
{* страница продукта*}
<h3>{$rsProduct['name']}</h3>
<img width="575" src="../www/images/products/{$rsProduct['image']}">
Стоимость: {$rsProduct['price']}
<a id="addCart_{$rsProduct['id']}" onclick="addToCart({$rsProduct['id']}); return false;" href="#">Добавить в корзину</a>
<p> Описание <br />{$rsProduct['description']}</p>
Файл
main.js:
/**
* Функция добавления товара в корзину
*
* @param integer itemId ID продукта
* @return в случае успеха обновятся данные корзины на странице
*/
function addToCart(itemId) {
console.log("js - addToCart()");
$.ajax({
type: 'POST',
async: false,
url: "/cart/addtocart" + itemId + '/',
dataType: 'json',
success: function (data) {
if(data['success']){
$('#cartCntItems').html(data['cntItems']);
$('#addCart_'+ itemId).hide();
$('#removeCart_'+ itemId).show();
}
}
});
}
Помогите, пожалуйста, найти источник этих двух ошибок. Главное, чтобы происходило добавление товара в корзину.