Цитата:
сделал вывод через done myobj.prototype.loadJSON = function() { var that = this; $.getJSON('json/test.json') .done(function(data){ console.log(data); that.loadedJSON = data; }) .fail(function() { console.log("Ошибка обработки JSON") }); //return this.loadedJSON; } Все то же самое - ошибка в той же строке : Uncaught TypeError: Cannot read property 'xdata' of undefined |
Вот нагородили-то )
Естесно он будет undefined, тк ваш запрос не успевает завершиться, а вы уже запрашиваете результат в следующей строке. |
чудеса, да и только. можете кинуть ваше творение полностью, хочу посмотреть
|
WorM32,
точняк))) чет под вечер туплю |
WorM32,
Подскажите как сделать тогда. |
как то так))
$.getJSON('json/test.json', function(data) { that.loadedJSON = data; that.prepareJSON(); }).fail(function() { |
anton.fed,
уже подсказали один из вариантов) |
Цитата:
Но как теперь мне обращаться к объекту если он не успевает загрузить JSON тут например консоль покажет undefined , т.к. json еще не загрузился. x = new myobj(); x.loadJSON(); console.log(JSON.stringify(x.xdata,null,' ')); /**/ как тут быть? |
можно сделать функцию обратного вызова:
.... myobj.prototype.loadJSON = function(callback) { var that = this; $.getJSON('json/test.json', function(data) { that.loadedJSON = data; that.prepareJSON(); if (typeof callback == 'function') callback(that, true); }).fail(function() { console.log("Ошибка JSON"); if (typeof callback == 'function') callback(that, false); }); return this.loadedJSON; } ...... x = new ft(); x.loadJSON(function (obj, success) { //actions }); |
Если так:
x.loadJSON(function (obj, success) { //actions }); то получается x.loadJSON - это можно сказать инициалиация объекта, все действия с объектом загруженным из json я смогу делать только внутри этой функции? |
Часовой пояс GMT +3, время: 03:08. |