В jQuery, как я могу использовать возвращенный объект JSON в других методах класса? - PullRequest
0 голосов
/ 27 августа 2010

Я создал класс в js / jQuery:

function JSONRequest(request_id, type){
    this.request_id = request_id;
    JSONsvc ='json_dispatch.php';
    this.type = type;
}

JSONRequest.prototype.query = function() {
    $.getJSON(JSONsvc,
            {request_id:this.request_id, type:this.type},
            function(data) {
                return data;
            }           
    );  
}
JSONRequest.prototype.buildKeyValues = function(data) {
    $.each(data.items, function(i,item){
        //$('textarea').text(item.comment); //hack
        $.each(item, function(j,key){
            $("#"+j).val(key);
        })
    })
}

JSONRequest.prototype.buildTableRows = function(data) {
    var tbodyContainer;
    tblRows = "";
    $.each(data.items, function(i,row){ 
        tblRows += "<tr>";      
        $.each(row, function(j,item){   
            tblRows +="<td>"+item+"</td>";
        })
        tblRows += "</tr>";
    })
    return tblRows;
}

Я использую его так:

var e = new JSONRequest(this.id,this.type);
e.query();
alert(e.data); //returns Undefined

Как получить возвращенный объект JSON для использования в моем другомметоды класса?

1 Ответ

0 голосов
/ 27 августа 2010

Вы не можете действительно вернуть данные из обратного вызова, как это.Другая, более серьезная проблема, с которой вы столкнулись, заключается в том, что getJSON является асинхронным.Итак, вам нужно передать обратный вызов в вашей функции query, чтобы вы могли иметь доступ к таким данным:

JSONRequest.prototype.query = function(callback) {
    $.getJSON(JSONsvc,
            {request_id:this.request_id, type:this.type},
            function(data) {
                if(callback) {
                   callback(data);
                }                    
            }           
    );  
};

Тогда:

var e = new JSONRequest(this.id,this.type);
e.query(function(data) {
   alert(data);
});

, который должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...