Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.02.2017, 00:45
Интересующийся
Отправить личное сообщение для Dencho Посмотреть профиль Найти все сообщения от Dencho
 
Регистрация: 23.11.2015
Сообщений: 17

Работа с обьектом и this
Привет всем. не могу решить один вопрос, Есть обьект:
var menu_js = {
        url:"js/menu.json",
        json_data: 'empty',
        menu: '',
        init:function(){

            this.load_json(function( jsonData ) {
                JSON.parse(jsonData);
                //как тут данные присвоить json_data
            });

            console.log(this.json_data) // выводится empty

            this.draw_menu(this.json_data) //отрисовка меню
        },
        load_json:function(ready){
            var xhr = new XMLHttpRequest();
            xhr.open( 'GET', this.url, true );
            xhr.send();
            xhr.onreadystatechange = function() {
                if (xhr.readyState != 4) return;
                if (xhr.status != 200) {
                    console.log(xhr.status + ': ' + xhr.statusText);
                } else {
                   ready(xhr.responseText);
                }
            }
        },
        draw_menu:function(){
            //....
        }
}

Данные загружаются всё норм но я не могу их присвоить json_data. В чем моя ошибка?. В этой теме я только разбираюсь, прошу сильно не пинать
Ответить с цитированием
  #2 (permalink)  
Старый 17.02.2017, 01:08
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

var menu_js = {
        url:"js/menu.json",
        json_data: 'empty',
        menu: '',
        init:function(){

            this.load_json(function( jsonData ) {
                this.json_data = jsonData;

                this.draw_menu(); //отрисовка меню
            });
        },
        load_json: function(ready){
            var self = this;
            var xhr = new XMLHttpRequest();
            xhr.open( 'GET', this.url, true );
            xhr.send();
            xhr.onreadystatechange = function() {
                if (xhr.readyState != 4) return;
                if (xhr.status != 200) {
                    console.log(xhr.status + ': ' + xhr.statusText);
                } else {
                   ready.call(self, JSON.parse(xhr.responseText));
                }
            }
        },
        draw_menu: function(){
            // здесь уже получена this.json_data
        }
}
Ответить с цитированием
  #3 (permalink)  
Старый 17.02.2017, 16:09
Интересующийся
Отправить личное сообщение для Dencho Посмотреть профиль Найти все сообщения от Dencho
 
Регистрация: 23.11.2015
Сообщений: 17

Спасибо большое помогло
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вакансия: Программист IOS, работа в офисе,г.Ростов-на-Дону Анна NikitaOnline Работа 0 21.03.2016 18:45
Интересная работа для JavaScript-разработчика в Москве от 120 000 linna9 Работа 1 21.01.2014 23:59
Постоянная работа / Front-end / Москва kooper Работа 4 29.09.2011 22:06