您好我正在使用jquery和ajax来检索登录用户的用户ID,我将其保存到变量中,因为我希望以后可以使用它做一些逻辑。但是我无法访问它。我的代码如下:
$(document).ready(function () {
var taskBoard = {
fetch: function (url, data) {
$('.loading-icon').fadeIn();
$('.task_board').addClass('loading');
$.ajax({
url: url,
async: true,
dataType: 'json',
data: data,
type: 'POST',
success: function (json) {
$('.loading-icon').fadeOut();
$('#task_board').html($(json.data.taskBoard));
$('.task_board').removeClass('loading');
$('.update-results').hide();
} // end success
}); //end ajax
}, //end fetch function
authUser: function (url, data) {
$.ajax({
url: url,
async: true,
dataType: 'json',
data: data,
type: 'POST',
success: function (json) {
$.each($(json), function (index, item) {
taskBoard.storeUser(item.id);
});
} // end success
}); //end ajax
}, //end authUser function
storeUser: function (param) {
var authUserId = param;
return param;
// if I do an alert here the correct user id is returned.
},
} //end var taskBoard
//However if I do an alert here outside of the var taskBoard I get an undefined.
alert(taskBoard.storeUser());
});
如何在此函数之外获取此全局赋值变量的任何想法?
答案 0 :(得分:1)
更改此
wp-config.php
改为:
storeUser: function (param) {
var authUserId = param;
return param;
// if I do an alert here the correct user id is returned.
},
现在var authUserId : null,
storeUser: function (param) {
if (param)
{
this.authUserId = param;
}
return this.authUserId;
},
将作为属性存储在authUserId
对象中。
当param未定义时,它将返回未更新的值,否则它将首先更新它然后返回它。
更优雅的解决方案是在这里使用Object.defineProperty
。
删除taskBoard
属性,在声明storeUser
对象后添加:
taskBoard
现在您可以为用户ID分配:
Object.defineProperty(taskBoard, "storeUser", {
get : function(){ return this.StoreUserVar; },
set : function(value){ this.StoreUserVar = value; }
});
答案 1 :(得分:0)
如果你需要一个全局变量,那么在document.ready之前声明该变量,因为在这个函数中定义的变量只在这个函数中有效