Задать вопрос
@No_name404

Как исправить ошибку Uncaught SyntaxError: Unexpected token u in JSON at position 0?

у меня есть массив,который я беру из localStorage с помощью такого кода
function loadCart(data) {
//проверяю есть ли в localStorage запись cart
if (localStorage.getItem('cart')) {
    // если есть - расширфровываю и записываю в переменную cart
    cart = JSON.parse(localStorage.getItem('cart'));
        if(isEmpty(cart)){
            $('.main-cart').html('Корзина пуста');
        }
        else init();
}
else {
   $('.main-cart').html('Корзина пуста');
}
}


после этого загружаю ассоциативный массив с товарами из бд

function init(){
$.post(
 'pages/adminPage/core.php',
{
    "action":"loadGoods"
},
showCart
);
}

и вывожу товар из localStorage
function showCart(data) {
var pack= JSON.parse(data);

var out = '';
    for (var id in cart) {
        for (key in pack) {
            if(id===pack[key].id){
                out += `<button data-id="${id}" class="del-goods">x</button>`;
                out += `<img src="pages/orderPage/goods/${pack[key].img}" 
                width='50em' height='50em'>`;
                out += ` ${pack[key].name  }`;
                out += `  <button data-id="${id}" class="minus-goods">- 
      </button>  `;
                out += ` ${cart[id]} `;
                out += `  <button data-id="${id}" class="plus-goods">+ 
      </button>  `;
                out += cart[id]*pack[key].cost;
                out += '<br>';
            }
        }
    }
$('.main-cart').html(out);
$('.del-goods').on('click', deleteGoods);
$('.plus-goods').on('click', plusGoods);
$('.minus-goods').on('click', minusGoods);
}

Проблема в том,что когда я выполняю ф-цию minusGoods

function minusGoods(){
//уменьшает товар в корзине на 1
var id = $(this).attr('data-id');
if (cart[id]===1){
    delete cart[id];
}
else cart[id]--;
saveCart();
showCart();
}


вылетает эта ошибка Uncaught SyntaxError: Unexpected token u in JSON at position 0
Не понимаю в чем может быть проблема,ведь такая же ф-ция plusGoods и deleteGoods у меня срабатывают
  • Вопрос задан
  • 38972 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
Вот тут вы вызываете функцию без аргументов:
function minusGoods(){
  // ......
  showCart();
}


А вот тут хотите в неё аргументы, которые передаете в JSON.parse
function showCart(data) {
  var pack = JSON.parse(data);


В итоге у вас получается ваша ошибка:
JSON.parse(undefined)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Смотри что приходит в JSON.parse
Ответ написан
Комментировать
@Deepcat
Посмотри с помощью console.log(data); (поставь до JSON.parse ) что приходит из файла обработчика, думаю обратишь внимание , что там не только json , а "что то еще". Потом иди в файл обработчик и смотри, что отправляет это "что то еще". Удачи
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы