Не могу обратиться к элементам массива, созданного добавлением элементов через AJAX

195
23 февраля 2018, 19:41

Здравствуйте. У меня имеется JSON файл, который содержит массив объектов. В JS скрипте я создаю пустой массив, чтобы потом, получая данный AJAX запросом, добавлять их в этот массив и работать уже с массивом. Добавить получается, но я не могу почему-то обращаться после этого к элементам массива. Мне выводится undefinded.

JSON

{
  "news": [
    {
      "photo": "./img/img-news/header-background.jpg",
      "article": "Проект «Краснодог»",
      "text": "Проверка текста, который я написал и составил 1."
    },
    {
      "photo": "",
      "article": "Проект «Форум добрых дел»",
      "text": "Сегодня я вам с радостью сообщаю, что работа выполнена!"
    }
  ]
}

JS

function News() {
    this.newsItems = [];
}
News.prototype.getItemsJson = function () {
    $.get({
       url: './news.json',
       dataType: "JSON",
       context: this,
       success: function (data) {
           // for (var key in data.news) {
           //     this.newsItems.push(data.news[key]);
           // }
           for (var i = 0; i < data.news.length; i++) {
               this.newsItems.push(data.news[i]);
           }
       }
    });
};
News.prototype.printArr = function () {
    console.log(this.newsItems);
    console.log(this.newsItems[0]);
};
$(document).ready(function () {
    var news = new News();
    news.getItemsJson();
    news.printArr();
});

Результат выполнения работы:

Answer 1

Работает.

var data = '{\ 
  "news": [\ 
    {\ 
      "photo": "./img/img-news/header-background.jpg",\ 
      "article": "Проект «Краснодог»",\ 
      "text": "Проверка текста, который я написал и составил 1."\ 
    },\ 
    {\ 
      "photo": "",\ 
      "article": "Проект «Форум добрых дел»",\ 
      "text": "Сегодня я вам с радостью сообщаю, что работа выполнена!"\ 
    }\ 
  ]\ 
}'; // <- json массив для проверки. 
 
 
data = JSON.parse(data);// <- добавлена строка. 
 
function News() { 
    this.newsItems = []; 
} 
 News.prototype.getItemsJson = function () { 
    for (var i = 0; i < data.news.length; i++) { 
               this.newsItems.push(data.news[i]); 
           } 
 }           
            
News.prototype.printArr = function () { 
    console.log(this.newsItems); 
    console.log(this.newsItems[0]); 
}; 
 
$(document).ready(function () { 
    var news = new News(); 
    news.getItemsJson(); 
    news.printArr(); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Код с примером $.get :

$.get("./news.json", function(data){
  console.log(data);
}, "json");
READ ALSO
Объединение значений массива

Объединение значений массива

Имеется массив типа

155
wordpress custom page list categories exclude

wordpress custom page list categories exclude

Please help me with this

192
Сортировка русских дат

Сортировка русских дат

Добрый день, возникла проблема такого характераИспользуется SQLite, мне нужно сортировать дату на русской локализации(с английской все ок отрабатывает)...

192