@Orbik

Ошибка Uncaught TypeError: Cannot read property '2' of null?

При открытие модального окна вылазит в консоле ошибка такого рода

Uncaught TypeError: Cannot read property '2' of null
at getSapogCost (file.js:44)
at openBlockSapog (file.js:80)
at Object.success (file.js:108)


Вот сам код
function getSapogCost(SapogType, arrPrices) {
  var price = 0;
  switch(+SapogType){
    case 1:
    case 2:
      price = arrPrices[1];  //  ОШИБКА в зависимости от товара может и тут быть
      break;
    case 3:
    case 4:
    case 5:
      price = arrPrices[2]; //  ОШИБКА В этой строке
      break;
    case 6:
      price = arrPrices[3]; //  ОШИБКА в зависимости от товара может и тут быть
      break;
    case 7:
    default:
      price = arrPrices[4]; //  ОШИБКА в зависимости от товара может и тут быть
  };
  return price;
	
}


function openBlockSapog( data, SapogContent ){

  openModal({
      content: SapogContent.Sapog.content
  }, false);
	if( SapogContent.Sapog.type == 'free' ) {
        var SapogType= + SapogContent.Sapog.SapogData[4];
        $('.ajax-box .Sapog-image').attr( 'src', './img/'+SapogType+'.png');
        price=getSapogCost(SapogType, SapogContent.Sapog.prices)//  ОШИБКА в этой строке
        if( SapogType == SapogContent.Sapog.freeSapogType && SapogContent.Sapog.haveFreeSapog == 0 ){
          price = 0;
        }
        $('.ajax-box .summa').html(price+'$');
    }else{
        transLiter('.ajax-box .translit');
    }
}

function allSearchMethods( action, data, processingRequest ){
    $.post(action, data, function (response) {

        // Все ок есть такой пользователь
        if (response.error != undefined) {
            showError(response);
        }

        // Вывести сообщение ошибки
        else if (response.ok != undefined) {

            if (response.Sapog != undefined) {
                if(processingRequest)
                    processingRequest.css('visibility', 'hidden');
                openBlockSapog(response.Sapog, {Sapog:{content:response.content, idSapog:response.Sapog.idSapog, type:response.type, prices:response.prices, SapogData:response.SapogData}});//  ОШИБКА в этой строке
                
                delete response;
                return;
            }

            if (response.Sapog == undefined) {
                openModal({
                    title:response.title,
                    content:'<div class="element-child scroll">' + response.content + '</div>'
                },true);

                elementChildAddClass();

                transLiter('.ajax-box .translit');
                //add open full Sapog list for one user
                $('.openFullSapogList').bind('click', function(){
                    var divEl = $('#FullSapogList-'+$(this).attr('data-idUser') );
                    if( divEl.css('display') == 'none' ){
                        divEl.css('display', 'block');
                    }
                    else{
                        divEl.css('display', 'none');
                    }

                });
            }
        }


В модальном окне всплывает товар в нем есть <span class="summa"> </span> должна отображаться стоимость товара, но она не отображается.
  • Вопрос задан
  • 202 просмотра
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
У вас несоответствие бизнес-логики формирования цены товара на стороне сервера (то что получаете в response.prices), и как вы ее пытаетесь обработать функцией getSapogCost() на стороне клиента. Либо у вас не обрабатываются какие-то исключительные случаи, например, когда товар отсутствует в продаже, а сервер в качестве response.prices не возвращает тот объект, который может обработать данная функция.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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