gpt4 book ai didi

jquery - 一张 Datatables.net 表,包含来自 Sharepoint 2010 REST API 的多个 ajax 调用

转载 作者:行者123 更新时间:2023-12-01 07:49:47 24 4
gpt4 key购买 nike

我是新来的,所以请提前原谅我这个冗长的问题。我是 SP2010 的新手,到目前为止,按照以下教程对我的 SP 列表进行 JQuery Ajax 调用:Who Needs a Data View Web Part? SharePoint REST and DataTables.net

我(和每个人)的问题是,SP2010 listdata.svc 仅返回 JSON 中的前 1000 个条目。然而,教程建议使用一种预过滤方法,仅调用用户需要的数据,在我的例子中,我想将所有 200 多个条目加载到表中,然后让用户选择/过滤他/她要。

我成功地进行了两次 Ajax 调用(一个调用了前 1000 个条目,另一个调用了其余 2000 个以上的条目 - 用于测试,以便轻松查看其中哪些已进入表格),在调试器中,两个 GET 请求都会发出并返回状态 200-OK 和数据,但只有其中一个被加载到表中。

问题:在传递到数据表之前是否有任何方法可以组合返回的 jqXHR 响应,或者是否有任何设置,在表初始化后,第二个数据不会覆盖第一个数据一?我知道,对于大多数人来说,多个 ajax 调用是“不行”的,但就我而言,由于服务器的速度和表的使用频率,这不是问题,但到目前为止我找到了解决方案多次调用填充多个表的主题。

到目前为止我的代码:

<script type="text/javascript">
function LoadData()
{
var call = $.ajax({
url: "https://SP2010_siteaddress.com/site/_vti_bin/listdata.svc/Listname?$select=Data1,Data2,Data3,Data4,Data5",
type: "GET",
dataType: "json",
headers: {
Accept: "application/json;odata=verbose"
}
});

var call2 = $.ajax({
url: "https://SP2010_siteaddress.com/site/_vti_bin/listdata.svc/Listname?$select=Data1,Data2,Data3,Data4,Data5&$skiptoken=2000",
type: "GET",
dataType: "json",
headers: {
Accept: "application/json;odata=verbose"
}
});

(call, call2).done(function (data,textStatus, jqXHR){
$('#example')
.on('xhr.dt', function ( e, settings, json ) {
for ( var i=0, ien=json.aaData.length ; i<ien ; i++ ) {
json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two;
}
// Note no return - manipulate the data directly in the JSON object.
} )
.dataTable({
ajax: "data.json",
"bServerside" : true,
"bProcessing": false,
"aaData": data.d.results,
"aoColumns": [
{ "mData": "Data1" },
{ "mData": "Data2" },
{ "mData": "Data3" },
{ "mData": "Data4" },
{ "mData": "Data5" }
],
"bRetrieve": true,
// "initComplete": function(settings, json) {
// alert( 'DataTables has finished its initialisation.' );
// }
});

call.fail(function (jqXHR,textStatus,errorThrown){
alert("Error retrieving Tasks: " + jqXHR.responseText);

});
});
}
</script>

预先感谢您提供有关如何解决此问题的任何建议。

最佳答案

如果您无法避免每次 Ajax 调用 1000 条记录的限制,您可以使用下面的代码。

它使用 $.when当两个 Ajax 调用成功时执行回调。

function LoadData()
{
var call1 = $.ajax({
url: "https://SP2010_siteaddress.com/site/_vti_bin/listdata.svc/Listname?$select=Data1,Data2,Data3,Data4,Data5",
type: "GET",
dataType: "json",
headers: {
Accept: "application/json;odata=verbose"
}
});

var call2 = $.ajax({
url: "https://SP2010_siteaddress.com/site/_vti_bin/listdata.svc/Listname?$select=Data1,Data2,Data3,Data4,Data5&$skiptoken=2000",
type: "GET",
dataType: "json",
headers: {
Accept: "application/json;odata=verbose"
}
});

// When both Ajax requests were successful
$.when(call1, call2).done(function(a1, a2){
// a1 and a2 are arguments resolved for the call1 and call2 ajax requests, respectively.
// Each argument is an array with the following structure: [ data, statusText, jqXHR ]

// Merge data from two Ajax calls
var data = a1[0].d.results.concat(a2[0].d.results);

$('#example').dataTable({
"aaData": data,
"aoColumns": [
{ "mData": "Data1" },
{ "mData": "Data2" },
{ "mData": "Data3" },
{ "mData": "Data4" },
{ "mData": "Data5" }
]
});
});
}

关于jquery - 一张 Datatables.net 表,包含来自 Sharepoint 2010 REST API 的多个 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31344909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com