2 个列表的 SharePoint REST 查询
SharePoint REST query for 2 lists
我正在尝试同时从 2 个列表(“Инструкции”和“'test')中获取项目,然后将它们放入 SharePoint 页面上的一个 table 中。
现在我有一个列表的工作解决方案 - 'Инструкции'(参见下面的示例)。
我正在使用 SharePoint 365。
我不是开发人员。
所以,如果可以的话,请用代码回复(不要只是说 "you need to do this and this"。
谢谢
我尝试应用本文中的代码,但没有给出预期的结果。
REST query with two lists
$(document).ready(function() {
loadMyItems();
});
function loadMyItems() {
var oDataUrl = "https://site.example/_api/Web/Lists/GetByTitle('Инструкции')/items?$select=Title,EncodedAbsUrl,Device,Related_x0020_application,Key_x0020_words&$filter=(ShowOnSearchPage eq 'Yes')&$top=5000";
$.ajax({
url: oDataUrl,
type: "GET",
dataType: "json",
headers: {
"accept": "application/json;odata=verbose"
},
success: mySuccHandler,
error: myErrHandler
});
}
function mySuccHandler(data) {
try {
var dataTableExample = $('#table_id').DataTable();
if (dataTableExample != 'undefined') {
dataTableExample.destroy();
}
dataTableExample = $('#table_id').DataTable({
scrollY: true,
"aaData": data.d.results,
"aoColumns": [{
"mData": "Title",
"render": function(data, type, row, meta){
return data = '<a href="' + row['EncodedAbsUrl'] + '">' + data + '</a>';}
},{
"mData": "Device",
"render": function( data, type, full, meta) {
if(!data){var returnText = "";}
else {var returnText = data.results;}
return returnText; }
},{
"mData": "Related_x0020_application",
},{
"mData": "Key_x0020_words",
}
]
});
} catch (e) {
alert(e.message);
}
}
function myErrHandler(data, errCode, errMessage) {
alert("Error: " + errMessage);
}
我们可以调用两个REST请求得到两个数据结果,然后用JavaScriptconcat方法连接结果。以下代码供您参考:
function execCrossDomainRequest() {
var call1 = $.ajax({
url: "/_api/web/lists/getbytitle('Ansatte')/items?$select=Title",
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
var call2 = $.ajax({
url: "/_api/web/lists/getbytitle('Kunder')/items?$select=Title",
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 cross-domain call: " + errorMessage);
};
// When both Ajax requests were successful
$.when(call1, call2).done(function(a1, a2){
console.log(allResults);
$('#example').DataTable({
data:allResults ,
columns: [
{ data: "Title" }
]
});
});
};
参考以下线程:
我正在尝试同时从 2 个列表(“Инструкции”和“'test')中获取项目,然后将它们放入 SharePoint 页面上的一个 table 中。
现在我有一个列表的工作解决方案 - 'Инструкции'(参见下面的示例)。 我正在使用 SharePoint 365。 我不是开发人员。
所以,如果可以的话,请用代码回复(不要只是说 "you need to do this and this"。 谢谢
我尝试应用本文中的代码,但没有给出预期的结果。 REST query with two lists
$(document).ready(function() {
loadMyItems();
});
function loadMyItems() {
var oDataUrl = "https://site.example/_api/Web/Lists/GetByTitle('Инструкции')/items?$select=Title,EncodedAbsUrl,Device,Related_x0020_application,Key_x0020_words&$filter=(ShowOnSearchPage eq 'Yes')&$top=5000";
$.ajax({
url: oDataUrl,
type: "GET",
dataType: "json",
headers: {
"accept": "application/json;odata=verbose"
},
success: mySuccHandler,
error: myErrHandler
});
}
function mySuccHandler(data) {
try {
var dataTableExample = $('#table_id').DataTable();
if (dataTableExample != 'undefined') {
dataTableExample.destroy();
}
dataTableExample = $('#table_id').DataTable({
scrollY: true,
"aaData": data.d.results,
"aoColumns": [{
"mData": "Title",
"render": function(data, type, row, meta){
return data = '<a href="' + row['EncodedAbsUrl'] + '">' + data + '</a>';}
},{
"mData": "Device",
"render": function( data, type, full, meta) {
if(!data){var returnText = "";}
else {var returnText = data.results;}
return returnText; }
},{
"mData": "Related_x0020_application",
},{
"mData": "Key_x0020_words",
}
]
});
} catch (e) {
alert(e.message);
}
}
function myErrHandler(data, errCode, errMessage) {
alert("Error: " + errMessage);
}
我们可以调用两个REST请求得到两个数据结果,然后用JavaScriptconcat方法连接结果。以下代码供您参考:
function execCrossDomainRequest() {
var call1 = $.ajax({
url: "/_api/web/lists/getbytitle('Ansatte')/items?$select=Title",
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
var call2 = $.ajax({
url: "/_api/web/lists/getbytitle('Kunder')/items?$select=Title",
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 cross-domain call: " + errorMessage);
};
// When both Ajax requests were successful
$.when(call1, call2).done(function(a1, a2){
console.log(allResults);
$('#example').DataTable({
data:allResults ,
columns: [
{ data: "Title" }
]
});
});
};
参考以下线程: