AJAX - 在$ .post中设置对象属性,其中'self'引用不起作用

时间:2012-10-13 00:52:23

标签: javascript ajax properties

这让我发疯了。

似乎无法从AJAX中设置属性值。

以下是我的代码

function Captcha(userKey) {
    var self = this;

    this.key;
    this.getCaptchaKey = function(userKey) {
        $.post('/api/captcha/get-key',data, function(data, status,jqXHR) {
            if(status) {
                self.key = data.data.captchaKey;

            }
        },"json");
    };
    this.getCaptchaKey(userKey);
}

我将'this'设置为'self'以引用AJAX调用。

然后当我将console.log()这个对象本身放在对象外面时,它告诉我已经设置了值。

self.captcha = new Captcha(self.userKey);
    self.captchaKey = self.captcha.key

    console.log(self.captcha);

所以'self.captcha'返回带有从AJAX调用中设置的'key'的正确值的对象。

但是当我在console.log(self.captcha.key)时,它会显示'undefined'

我一直在谷歌搜索,但找不到答案。

1 个答案:

答案 0 :(得分:1)

我认为您的问题是您将异步调用视为同步。您正在读取Ajax调用返回之前的值。