【问题标题】:Pass result of $.getJSON to another method of the same class将 $.getJSON 的结果传递给同一类的另一个方法
【发布时间】:2015-11-19 12:11:27
【问题描述】:

我有一个 JavaScript 类,想将 $.getJSON 的结果传递给同一类的另一个方法,并从类外部访问它。我的错误在哪里?

我的代码是这样的:

function MyClass() {
    var mydata = false;

    this.getData = function() {
        $.getJSON( "/api/get.php", function(data) {
            this.setData(data);
        });
    }

    this.setData = function(data) {
        this.mydata = data;
        this.logData();
    } 

    this.logData = function() {
        console.log(this.mydata);
    }   

    this.returnData = function() {
        return this.mydata;
    } 
}

var MyClass = new MyClass();
MyClass.getData();
var data = MyClass.returnData();

首先我想创建我的类的一个实例并从服务器获取数据。然后方法 setData 应该验证结果,将其存储在变量中并将结果记录到控制台。在此之后,我想从课堂外访问数据。

【问题讨论】:

    标签: javascript jquery ajax class methods


    【解决方案1】:

    this 在每个函数中都会发生变化,因此您可以将 this 存储在变量中:

    function MyClass() {
        var mydata = false, that = this;
    
        this.getData = function() {
            $.getJSON( "/api/get.php", function(data) {
                that.setData(data);
            });
        }
    
        this.setData = function(data) {
            that.mydata = data;
            that.logData();
        } 
    
        this.logData = function() {
            console.log(that.mydata);
        }   
    
        this.returnData = function() {
            return that.mydata;
        } 
    }
    
    var MyClass = new MyClass();
    MyClass.getData();
    var data = MyClass.returnData();
    

    【讨论】:

    • 谢谢!我只是忘记了这个!
    【解决方案2】:

    试试这个:

        function MyClass(){
    
    var setValue="",logValue="";
    
    var getJSON = function(setDatafunc){
        $.getJSON( "http://demo3913311.mockable.io/mytestdata", function(data) {
            setDatafunc(data);
        });
    }
    
    var getData = function(){
        return getJSON(setData);
    }
    
    var setData = function(data) {
             setValue = (data)? data: (setValue)? setValue : 'undefined'
             logData(setValue);
    } 
    
    var logData= function(data){
        logValue = (data)? data: (logValue)? logValue : 'undefined'
        console.log('12',logValue)
        return logValue;
    }
    
    var returnData = function(){
        return logValue;
    }
    
    
    
    return {
    
        get: getData,
        set: setData,
        //log: logData
        doReturn : returnData
    }
    
    }
    
    var MyClass = new MyClass();
    MyClass.get()
    MyClass.doReturn();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 2022-01-05
      • 1970-01-01
      相关资源
      最近更新 更多