在我的项目中,我使用Parse.com
作为服务器和数据库,并使用DataTable
插件创建显示返回数据的表。当我使用预定义的json
文件时没有问题,但是当我尝试使用从Parse.com
返回的数据构造本地json
文件时,出现错误。看起来不管我做什么,表创建过程都是先运行的,只有在创建完json object
之后才能运行。相关代码JSfiddle here。请注意,由于大量的代码,我没有提供工作示例,但只有相关的部分。无法使用从Parse.com检索的数据构造DataTable
function getDataFromParse(){
console.log("test function run");
var loc_json={
"data":[]
};
//get data from parse
var parseTable = Parse.Object.extend("parseTable");
var tableObj = new parseTable();
var query = new Parse.Query(parseTable);
var count=0;
query.descending("createdAt");
query.find({
success: function(resultArr){
console.log("retreiving data from parse");
for(var i=0;i<resultArr.length;i++){
query.get(resultArr[i].id,{
success: function(tableObj){
var ret_phone = tableObj.get("phone");
var ret_first = tableObj.get("firstName");
var ret_last = tableObj.get("lastName");
var ret_status = tableObj.get("redemption_status");
var ret_vipCode = tableObj.get("vipCode");
loc_json.data.push([count,ret_first +" "+ret_last,ret_phone,tableObj.get("createdAt"),ret_vipCode]); //construction of local json
count++;
console.log("finished fetching data for "+ret_first+" "+ret_last);
},
error: function(object, error) {
console.log("could not do something "+error.message);
}
});
}
console.log("success function end");
},
error: function(error){
console.log(error.message);
}
});
console.log("trying to return json");
return loc_json;
}
var rows_selected = [];
console.log("table creation");
var table = $('#example').DataTable({
ajax: getDataFromParse(), // ajax: 'https://api.myjson.com/bins/4qr1g', THIS WORKS!!
columns: [
{},
{ data: 1},
{ data: 2 },
{ data: 3 }
],
'columnDefs': [{
'targets': 0,
'searchable':false,
'orderable':false,
'className': 'dt-body-center',
'render': function (data, type, full, meta){
return '<input type="checkbox">';
}
}],
'order': [1, 'asc'],
'rowCallback': function(row, data, dataIndex){
// Get row ID
$('input.editor-active', row).prop('checked', data[3] == 1)
var rowId = data[0];
// If row ID is in the list of selected row IDs
if($.inArray(rowId, rows_selected) !== -1){
$(row).find('input[type="checkbox"]').prop('checked', true);
$(row).addClass('selected');
console.log("table trying to create itself");
}
}
});
添加jQuery和Parse.com CDN,但得到“未捕获的错误:您需要在使用Parse之前调用Parse.initialize”。我猜测是因为没有“应用程序ID”或“JAVASCRIPT KEY”。也许建立一个虚拟项目并添加一个ID和密钥?还需要有一个带有示例id的表格(http://jsfiddle.net/annoyingmouse/t6xj4wks/2/) – annoyingmouse
感谢您的重播,我创建了一个新的应用程序,其中包含一些示例数据,并更新你的小提琴。它可以在这里找到:http://jsfiddle.net/t6xj4wks/5/ – undroid