Uncaught TypeError: Cannot read property 'length' of undefined

131
11 марта 2021, 19:50

через php делаю json, в console.log(json) выводит данные, но выдает ошибку

dashboard.php?sid=bca10dac-9160-49b9-9989-871364a0401d&pGraphID=1:199 Uncaught TypeError: Cannot read property 'length' of undefined
    at Object.success (dashboard.php?sid=bca10dac-9160-49b9-9989-871364a0401d&pGraphID=1:199)
    at i (jquery-3.2.1.min.js:2)
    at Object.fireWith [as resolveWith] (jquery-3.2.1.min.js:2)
    at A (jquery-3.2.1.min.js:4)
    at XMLHttpRequest.<anonymous> (jquery-3.2.1.min.js:4)

json такого формата

{"data":[{"X":"01 (21.06.19-27.06.19)","Y":"ДальнийВосток","AMOUNT":"9,52"},{"X":"01 (21.06.19-27.06.19)","Y":"Дирекция Приволжский","AMOUNT":"3,43"},{"X":"01 (21.06.19-27.06.19)","Y":"Краснодар","AMOUNT":"15,88"},{"X":"01 (21.06.19-27.06.19)","Y":"Москва","AMOUNT":"16,65"},{"X":"01 (21.06.19-27.06.19)","Y":"Владивосток","AMOUNT":"12,06"},{"X":"02 (14.06.19-20.06.19)","Y":"ДальнийВосток","AMOUNT":"10,19"},{"X":"02 (14.06.19-20.06.19)","Y":"Дирекция Приволжский","AMOUNT":"3,91"},{"X":"02 (14.06.19-20.06.19)","Y":"Краснодар","AMOUNT":"18,41"},{"X":"02 (14.06.19-20.06.19)","Y":"Москва","AMOUNT":"17,27"},{"X":"02 (14.06.19-20.06.19)","Y":"Владивосток","AMOUNT":"12,26"},{"X":"03 (07.06.19-13.06.19)","Y":"ДальнийВосток","AMOUNT":"9,57"},{"X":"03 (07.06.19-13.06.19)","Y":"Дирекция Приволжский","AMOUNT":"4,03"},{"X":"03 (07.06.19-13.06.19)","Y":"Краснодар","AMOUNT":"14,94"},{"X":"03 (07.06.19-13.06.19)","Y":"Москва","AMOUNT":"14,32"},{"X":"03 (07.06.19-13.06.19)","Y":"Владивосток","AMOUNT":"8,9"},{"X":"04 (31.05.19-06.06.19)","Y":"ДальнийВосток","AMOUNT":"10,54"},{"X":"04 (31.05.19-06.06.19)","Y":"Дирекция Приволжский","AMOUNT":"4,01"},{"X":"04 (31.05.19-06.06.19)","Y":"Краснодар","AMOUNT":"18,11"},{"X":"04 (31.05.19-06.06.19)","Y":"Москва","AMOUNT":"14,5"},{"X":"04 (31.05.19-06.06.19)","Y":"Владивосток","AMOUNT":"13,01"},{"X":"05 (24.05.19-30.05.19)","Y":"ДальнийВосток","AMOUNT":"11,98"},{"X":"05 (24.05.19-30.05.19)","Y":"Дирекция Приволжский","AMOUNT":"10,53"},{"X":"05 (24.05.19-30.05.19)","Y":"Краснодар","AMOUNT":"18,89"},{"X":"05 (24.05.19-30.05.19)","Y":"Москва","AMOUNT":"13,72"},{"X":"05 (24.05.19-30.05.19)","Y":"Владивосток","AMOUNT":"11,02"},{"X":"06 (17.05.19-23.05.19)","Y":"ДальнийВосток","AMOUNT":"9,03"},{"X":"06 (17.05.19-23.05.19)","Y":"Дирекция Приволжский","AMOUNT":"3,98"},{"X":"06 (17.05.19-23.05.19)","Y":"Краснодар","AMOUNT":"17,56"},{"X":"06 (17.05.19-23.05.19)","Y":"Москва","AMOUNT":"12,99"},{"X":"06 (17.05.19-23.05.19)","Y":"Владивосток","AMOUNT":"8,64"},{"X":"07 (10.05.19-16.05.19)","Y":"ДальнийВосток","AMOUNT":"7,89"},{"X":"07 (10.05.19-16.05.19)","Y":"Дирекция Приволжский","AMOUNT":"3,87"},{"X":"07 (10.05.19-16.05.19)","Y":"Краснодар","AMOUNT":"11,29"},{"X":"07 (10.05.19-16.05.19)","Y":"Москва","AMOUNT":"10,18"},{"X":"07 (10.05.19-16.05.19)","Y":"Владивосток","AMOUNT":"9,82"},{"X":"08 (03.05.19-09.05.19)","Y":"ДальнийВосток","AMOUNT":"6,16"},{"X":"08 (03.05.19-09.05.19)","Y":"Дирекция Приволжский","AMOUNT":"2,98"},{"X":"08 (03.05.19-09.05.19)","Y":"Краснодар","AMOUNT":"10,76"},{"X":"08 (03.05.19-09.05.19)","Y":"Москва","AMOUNT":"10,93"},{"X":"08 (03.05.19-09.05.19)","Y":"Владивосток","AMOUNT":"6,67"},{"X":"09 (26.04.19-02.05.19)","Y":"ДальнийВосток","AMOUNT":"9,31"},{"X":"09 (26.04.19-02.05.19)","Y":"Дирекция Приволжский","AMOUNT":"4,31"},{"X":"09 (26.04.19-02.05.19)","Y":"Краснодар","AMOUNT":"9,58"},{"X":"09 (26.04.19-02.05.19)","Y":"Москва","AMOUNT":"7,85"},{"X":"09 (26.04.19-02.05.19)","Y":"Владивосток","AMOUNT":"7,75"},{"X":"10 (19.04.19-25.04.19)","Y":"ДальнийВосток","AMOUNT":"9,16"},{"X":"10 (19.04.19-25.04.19)","Y":"Дирекция Приволжский","AMOUNT":"4,25"},{"X":"10 (19.04.19-25.04.19)","Y":"Краснодар","AMOUNT":"10,97"},{"X":"10 (19.04.19-25.04.19)","Y":"Москва","AMOUNT":"10,28"},{"X":"10 (19.04.19-25.04.19)","Y":"Владивосток","AMOUNT":"15,27"},{"X":"11 (12.04.19-18.04.19)","Y":"ДальнийВосток","AMOUNT":"9,12"},{"X":"11 (12.04.19-18.04.19)","Y":"Дирекция Приволжский","AMOUNT":"4,32"},{"X":"11 (12.04.19-18.04.19)","Y":"Краснодар","AMOUNT":"9,3"},{"X":"11 (12.04.19-18.04.19)","Y":"Москва","AMOUNT":"9,47"},{"X":"11 (12.04.19-18.04.19)","Y":"Владивосток","AMOUNT":"10,27"}]}

ошибка в for (var i = 0; i < json.data.length; i++), как его можно исправить?

<script>
 jQuery(function() {
      $.ajax({
                url:'graphid.php'
                , type:'GET'
                , data: {Sid:$("#Sid").val()}
                , success: function (json) {
                    console.log(json);          
                     result=JSON.parse(json);
                     if (result.hasOwnProperty("error")){
                          alert(result.error);
                     }else{

var xLabels = [];
    var someData = [];
var colors =[
                'rgba(255,99,132,1)',
                'rgba(54, 162, 235, 1)',
                'rgba(255, 206, 86, 1)',
                'rgba(75, 192, 192, 1)',
                'rgba(153, 102, 255, 1)'
               ];
             var backcolors =['rgba(255, 99, 132, 0.2)',
                'rgba(54, 162, 235, 0.2)',
                'rgba(255, 206, 86, 0.2)',
                'rgba(75, 192, 192, 0.2)',
                'rgba(153, 102, 255, 0.2)'];
               var g = 0;
    var options = {
  responsive: true,
  maintainAspectRatio: false,
  scaleStartValue: 0,
  scaleStepWidth: 50,
  defaultFontFamily : "'Open Sans', sans-serif",
  defaultFontSize : 12,
  defaultFontStyle : "bold",
  defaultFontColor : "#545454",
  scales: {
    xAxes: [{
      gridLines: {
        display: true,
        color: "#CCC8BC",
        lineWidth: 1,
        zeroLineWidth: 1,
        zeroLineColor: "#2C292E",
        drawTicks: true,
        tickMarkLength: 1
      },
      ticks: {
        fontFamily: "'Open Sans', sans-serif",
        fontSize: 12,
        fontStyle: "bold",
        fontColor: "#545454"
      }
    }],
    yAxes: [{
                            display: true,
                            ticks: {
                                beginAtZero: true,
                                steps: 10,
                                stepValue: 5,
                                max: 10
                            }
    }]
  }
};         

for (var i = 0; i < json.data.length; i++) {
                    // console.log(json.data[i].x);
                    if ($.inArray(json.data[i]['X'], xLabels) == -1) {
                        xLabels.push(json.data[i]['X']);
                    }

                    var name = json.data[i]['Y'];
                    var found = false;
                    var zz;
                    for (var z = 0; z < someData.length; z++) {
                        if (someData[z].label == name) {
                            found = true;
                            zz = z;
                            break;
                        }
                    }
                    if (!found) {
                        someData.push({
                            label: name,
                            data: [],
                            backgroundColor: backcolors[g],
                            borderColor: colors[g],
                            fill: -1
                        });
                        g++;
                        zz = someData.length - 1;
                    }
                    var amount = json.data[i]['AMOUNT'].replace(',', '.');
                    someData[zz].data.push(amount);
                }
    var config = {
        type: 'line',
        data: {
            labels: xLabels,
            datasets: someData,
        },
        options: options
    };
    var ctx = document.getElementById('myChart').getContext('2d');
    new Chart(ctx, config);         
                     };
      }});
 });
</script>
Answer 1

Ошибка Cannot read property '…' of undefined означает, что вы пытаетесь обратиться к свойству не инициализированного объекта.

Если ошибка в строке for (var i = 0; i < json.data.length; i++), значит data у нас undefined. Вероятнее всего, у json просто нет такого свойства.

Судя по листингу json - просто текст ответа. Вероятнее всего вместо json должна использоваться переменная result (result=JSON.parse(json))

READ ALSO
Не выполняется onRestart()

Не выполняется onRestart()

Про метод onRestart() сказано что он выполняется перед onStart если активити восстанавливается из состояния stoppedУ меня в программе есть 2 активити...

105
Не запускается JavaFX проект

Не запускается JavaFX проект

Все работало, но потом я попробовал создатьjar, он не запускался

129
Почему литерал типа double (подходящий для float) не авто-преобразовывается во float?

Почему литерал типа double (подходящий для float) не авто-преобразовывается во float?

Почему литерал типа double (подходящий для float) не авто-преобразовывается в float? Но при этом, аналогичным образом, подходящий литерал int авто-преобразовывается...

105
java.sql.SQLException: Access denied for user &#39;root&#39;@&#39;ip&#39; (using password: YES)

java.sql.SQLException: Access denied for user 'root'@'ip' (using password: YES)

не помогло and others didnt help? i work with phpmyAdmin? help me(другие случаи не работают) когда была локальная базаданных, все работало нормально, вот ссылка

175