Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.11.2020, 22:08
orb orb вне форума
Новичок на форуме
Отправить личное сообщение для orb Посмотреть профиль Найти все сообщения от orb
 
Регистрация: 12.09.2015
Сообщений: 9

Ошибка Uncaught TypeError: Cannot read property '1' of null?
Есть сайт самописный, пк и мобильная версия отдельно. В Пк версии цена отображается корректно. А в мобильной версии как я понял идет парс цены. Так вот при открытии товара - появляется товар но цена пустая и в консоле следующая ошибка:

Код:
Uncaught TypeError: Cannot read property '1' of null
at getSapogCost (file.js:44)
at openBlockSapog (mob.js:80)
at Object.success (mob.js:108)
Сам код файла file.js
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;
  
}



Строки кода mob.js

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');
                    }

                });
            }
        }
Ответить с цитированием
  #2 (permalink)  
Старый 16.11.2020, 22:35
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,418

У вас в функцию getSapogCost вместо массива вторым аргументом передается null.
Ответить с цитированием
  #3 (permalink)  
Старый 16.11.2020, 23:07
orb orb вне форума
Новичок на форуме
Отправить личное сообщение для orb Посмотреть профиль Найти все сообщения от orb
 
Регистрация: 12.09.2015
Сообщений: 9

т.е arrPrices - возвращает null, потому что там нет цены?
Ответить с цитированием
  #4 (permalink)  
Старый 16.11.2020, 23:47
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,418

orb,
Сообщение от orb
т.е arrPrices - возвращает null, потому что там нет цены?
arrPricesничего не возвращает, это не функция, а её аргумент.
Ответить с цитированием
  #5 (permalink)  
Старый 17.11.2020, 00:38
orb orb вне форума
Новичок на форуме
Отправить личное сообщение для orb Посмотреть профиль Найти все сообщения от orb
 
Регистрация: 12.09.2015
Сообщений: 9

Получается вместо аргумента должен передаваться массив с данными, а именно ценой? Что мне нужно найти, чтобы исправить это
Ответить с цитированием
  #6 (permalink)  
Старый 17.11.2020, 03:18
Аватар для Aetae
Любитель
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 5,680

Цены. На сервере. В ответ на post запрос, с сервера в response.prices тебе приходит null вместо массива цен.

Если цены не важны - добавь сверху в getSapogCost:
if(!arrPrices) return 0;
__________________
29375, 35

Последний раз редактировалось Aetae, 17.11.2020 в 03:21.
Ответить с цитированием
  #7 (permalink)  
Старый 17.11.2020, 07:50
orb orb вне форума
Новичок на форуме
Отправить личное сообщение для orb Посмотреть профиль Найти все сообщения от orb
 
Регистрация: 12.09.2015
Сообщений: 9

надо чтобы цены отображались, есть конфиг файл в нем вот так цены указаны
$config['priceSapog'] = array(

        1 => $config['priceDefRUR1'],

        2 => $config['priceDefRUR1'],

        3 => $config['priceDefRUR2'],

        4 => $config['priceDefRUR2'],

        5 => $config['priceDefRUR2'],

        6 => $config['priceDefRUR3'],

        7 => $config['priceDefRUR4'],

    );
Ответить с цитированием
  #8 (permalink)  
Старый 17.11.2020, 09:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от orb
надо чтобы цены отображались
Так проверяйте почему сервер не возвращает то, что у вас в $config['priceSapog'].
Ответить с цитированием
  #9 (permalink)  
Старый 17.11.2020, 10:35
orb orb вне форума
Новичок на форуме
Отправить личное сообщение для orb Посмотреть профиль Найти все сообщения от orb
 
Регистрация: 12.09.2015
Сообщений: 9

Так он везде возвращает, но именно в мобильной версии как я понял через парс все это дело идет и идет подмена функций
Ответить с цитированием
  #10 (permalink)  
Старый 17.11.2020, 10:46
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Каких функций и зачем подменять? В отладчике смотрите что возвращается сервером, что далее делается. Для этого нужно разрешить удаленную отладку на моб. устройстве и в отладчике браузера (настольного компьютера) выбрать и подключить устройство, можно будет отлаживать. Как это делается в разных браузерах, найдете в сети, есть описания, а гадать на кофейной гуще приходит ли у вас или нет никто не станет.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что не так с плагином Янковиц Элементы интерфейса 23 28.04.2020 19:52
Uncaught TypeError: Cannot read property 'firstChild' of null Julia1991 Общие вопросы Javascript 2 26.07.2018 13:17
Ошибка Cannot read property 'hide' of null strify_25 jQuery 10 24.05.2016 19:18
Uncaught TypeError: Cannot read property 'getElementById' of null kilohertz_. AJAX и COMET 5 07.12.2014 08:04
Ошибка: Uncaught TypeError: Cannot set property 'innerHTML' of null dolte Events/DOM/Window 4 16.09.2013 10:54