为什么回调变量在这个函数中是未定义的?

时间:2014-05-21 02:08:10

标签: javascript jquery ajax

我有一个在status.js中处理Ajax调用的函数:

window.APPLICATION = window.APPLICATION || {};
    window.APPLICATION = {
        getStatus: function(callingScope) {

                var _this = this;

                var getStatus = $.ajax({

                    type: "POST",
                    url: "/php/status.php",
                    data: {
                        "action": "mystatus"
                    }

                });

                getStatus.done(function(Response) {

                    if (Response.data != undefined) {
                        _this.cache.statusdata = {
                            userstatus: Response.data
                        };


                    } else if (Response.error != undefined) {
                        console.log('status data request error...');

                    }

                    callingScope.ajaxLoaded++;

                }),

                getStatus.fail(function(jqXHR, textStatus) {
                    console.log("user save form fail - an error occurred: (" + textStatus + ").");
                });

        },
    }

在我的user.js中,我称之为:

window.APPLICATION.USER.ajaxLoaded = 0;
window.APPLICATION.getStatus(window.APPLICATION.USER);

我需要这个ajaxLoaded变量计数器,因为我有其他Ajax调用。需要它来确定是否所有呼叫都已完成。

但是,我在控制台中遇到以下错误:

enter image description here

如何解决?

1 个答案:

答案 0 :(得分:0)

window.APPLICATION.USER.ajaxLoaded = 0;

这一行给出错误。

这是因为,USER未定义。

在定义属性之前,您需要先将USER声明为对象。

所以

window.APPLICATION.USER = {};

然后

 window.APPLICATION.USER.ajaxLoaded = 0; // this will work

在回调中,你试图访问未定义的window.APPLICATION.USER对象,因此callingScope发出错误,指出它未定义