在我的項目中,我使用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