从类方法中的ajax post函数回调函数更改javascript类属性

时间:2016-04-25 12:31:09

标签: javascript jquery ajax oop

以下是我的javascript文件的内容。

var inyavicsage = inyavicsage || {};

inyavicsage.TestClass = function () {
    this.testProperty = null;
}

inyavicsage.TestClass.prototype = {
    constructor: this,
    testMethod: function () {
        testClass = this;

        $.post('test.php', function(data){
            testClass.testProperty = data;
        });

        alert(testClass.testProperty);
    }
}

var testClass = new inyavicsage.TestClass();
testClass.testMethod();

我希望“alert(testClass.testProperty)”语句应该显示分配给“testClass.testProperty”的“data”变量的内容,而是显示“null”。

问题及其解决方案是什么?

2 个答案:

答案 0 :(得分:3)

alert(testClass.testProperty)显示null,因为发布请求是异步的。

所以基本上你在设置之前就已经获得了这个属性。 这将有效:

$.post('test.php', function(data){
    testClass.testProperty = data;
    alert(testClass.testProperty);
});

答案 1 :(得分:0)

这是因为javascript的异步性质,发布了帖子然后它继续运行。当它到达警报时它是null。

解决方法是在帖子的回调中调用函数