我在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对象以用于我的其他类方法?
答案 0 :(得分:0)
你无法真正从这样的回调中返回数据。您遇到的另一个更严重的问题是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);
});
应该有用。