jquery ajax存储变量,然后再检索

时间:2015-08-09 15:20:57

标签: javascript jquery ajax global-variables

您好我正在使用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());
 });

如何在此函数之外获取此全局赋值变量的任何想法?

2 个答案:

答案 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之前声明该变量,因为在这个函数中定义的变量只在这个函数中有效

Javascript Scope Examples