應該有這個問題做了合理的解釋,但我不能找到任何東西。我在我的javascrtipt應用程序中使用OOP,並試圖將變量值設置爲函數。JavaScript變量值顯示有前
對於第一值init_s.__temp_var
等於空對象。在我調用函數logic_s.get_active_statuses(..)
之後,它應該被覆蓋。但事實並非如此。操作:
var widget = {
settings: {
__temp_var: {}
},
init: function() {
init_s = this.settings;
logic_s = this.functions_available;
},
functions_available: {
get_active_statuses: function (id) {
jQuery.ajax({
url: .....,
type: 'POST',
dataType: 'JSON',
data: {
....
},
success: function (data) {
init_s.__temp_var = data; // not working
return data; // undefined
},
error: function (e) {
console.log(e.message);
}
});
}
},
my_actions: {
logic: function() {
var active_services_status = logic_s.get_active_statuses(5);
console.log(init_s.__temp_var); // should print {id : 5}
console.log(active_services_status); // if used with return prints "undefined"
}
}
};
所以當我打電話logic_s.get_active_statuses(5);
首次,它loggs我空對象,但是當我把它稱爲第二次,它loggs我{id : 5}
。如果第三次變量爲10,則將在第四次調用後打印。這是爲什麼發生?這似乎是打印後正在設置變量..
編輯:
事情是這樣的工作並返回「未定義」:
function get_active_status (id) {
jQuery.ajax({
url: .....,
type: 'POST',
dataType: 'JSON',
data: {
....
},
success: function (data) {
return data; // undefined
},
error: function (e) {
console.log(e.message);
}
});
};
get_active_status(5); // returns "undefined" instead of object that was sended
請提供的jsfiddle – dude
'get_active_statuses'中有沒有'return',所以'VAR active_services_status'是不會做太多... –
但如果我讓它像這個'get_active_statuses:function(id){ return id; }'它打印我「未定義」。邏輯僅僅是一個例子,'get_active_statuses'是一個Ajax調用成功呼叫 –