0

これは私を夢中にさせています。

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 呼び出しから設定された「キー」の正しい値を持つオブジェクトを返します。

しかし、console.log(self.captcha.key) を実行すると、「未定義」と表示されます

私はどこでもグーグルで検索しましたが、答えが見つかりませんでした。

4

1 に答える 1

1

あなたの問題は、非同期呼び出しを同期として扱っているという事実だと思います。Ajax呼び出しが戻る前に値を読み取っています。

于 2012-10-13T01:01:55.700 に答える