为了在线克服Sharepoint的5000视图阈值,我尝试进行2次ajax调用,连接结果并显示在Jquery Datatables中。但是,下面的代码没有提供任何输出或错误。请提供建议。
var results;
var allResults = [];
$(document).ready(function () {
load();
});
function load() {
var call1 = $.ajax({
url: "SPO_Site/_api/web/lists/getbytitle('List')/items?$select=Created&$top=5000&$skip=0&$orderby=Date desc",
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
var call2 = $.ajax({
url: "SPO_Site/EKDL/_api/web/lists/getbytitle('List')/items?$select=Created&$top=5000&$skip=5000&$orderby=Date desc",
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
function successHandler(a) {
var jsonObject = JSON.parse(a.body);
results = jsonObject.d.results;
if (allResults.length > 0)
allResults = allResults.concat(results);
else
allResults = results;
}
function errorHandler(data, errorCode, errorMessage) {
console.log("Could not complete call: " + errorMessage);
};
$.when(call1, call2).done(function(a1, a2){
console.log(allResults);
$('#table_id').DataTable({
data:allResults ,
columns: [{ data: "Created" }]
});
});
};
下面的代码修复了这个问题。
var results;
var allResults = [];
$(document).ready(function () {
$.fn.dataTable.moment( 'DD-MM-YYYY' );
load();
});
function load() {
var year2021 = $.ajax({
url: "<<List 1 API call>>",
type: "GET", dataType: "json", headers: {"accept": "application/json;odata=verbose"},
success: mySuccHandler, error: myErrHandler});
var year2020 = $.ajax({
url: "<<List 2 API call>>",
type: "GET", dataType: "json", headers: {"accept": "application/json;odata=verbose"},
success: mySuccHandler, error: myErrHandler});
function mySuccHandler(a) {
results = a.d.results;
if (allResults.length > 0)
allResults = allResults.concat(results);
else
allResults = results;
}
function myErrHandler(data, errorCode, errorMessage) {
console.log("Could not complete call: " + errorMessage);
};
$.when(year2021, year2020).done(function(a1, a2){
// console.log(allResults);
$('#table_id').DataTable({
data:allResults,
columns: [
{ data: "Field 1" },
{ data: "Field 2" }
]
});
});
};