У меня возникли проблемы с классической областью видимости локальной переменной javascript, но я имею дело с переменной JSON. Я посмотрел здесь другие вопросы, касающиеся того же самого, но ничто не соответствовало моему случаю точно, так что здесь. У меня есть класс, который я сделал из JavaScript, который имеет 3 метода: func1, func2 и func3. У меня также есть локальная переменная JSON, которая устанавливается в одном из методов из вызова ajax, который я делаю с помощью jquery, но не устанавливается, когда я вызываю метод, который возвращает значение этой локальной переменной. Я знаю, что ajax работает нормально, потому что я могу без проблем отображать данные, которые возвращаются и устанавливаются в переменную json отлично. Это происходит только тогда, когда я вызываю другой метод, который взаимодействует с этой переменной JSON. Вот основная версия моего кода:
function func1(){
func2();
}
function func2(){
$.getJSON("http://webservice.mydomain.com/methodname&jsoncallback=?",
function(data){
this.z = eval("(" + data.d + ")");
alert(data.d); //this displays the data!
alert(this.z.ArrayProperty[0].Property1); //this displays
//the correct data too!
}
);
}
function func3(){
return this.z.ArrayProperty[0].Property1;
}
function myClass(var1, var2){
this.x = var1;
this.y = var2;
this.z = "";
this.func1 = func1;
this.func2 = func2;
this.func3 = func3;
}
А затем на моей странице .html у меня есть следующий код:
var obj = new myClass(1,2);
obj.func1("abc");
alert(obj.func3()); //ERROR: this.z.ArrayProperty is undefined
Есть идеи?!?! Я ломаю голову!
Спасибо