我正在尝试从SharePoint列表中获取项目列表,但是当函数不返回任何内容时。
这是我的功能:
$(document).ready(function(){
GetList();
console.log("Ts");
});
function GetList() {
$().SPServices.SPGetCurrentSite(
{
operation : "GetListItems",
async: true,
listName : "ESA Mailing Group Subscribers",
CAMLViewFields : "<ViewFields>"+"<FieldRef Name='Title' /><FieldRef Name='Mailing Group Address' />" +"</ViewFields>",
CAMLQuery: "<Query><Where><Eq><FieldRef Name='Title'></Eq></Where><OrderyBy><FieldRef Name='MailingAddressGroup'/></OrderBy></Query>",
completefunc : function (xData, Status)
{
console.log("Dat");
$(xData.responseXML).SPFilterNode("z:row").each(function() {
var liHtml = "<tr><td>" + $(this).attr("ows_Title") + "</td><td>" + $(this).attr("ows_MailingGroupAddress") + "</td></tr>";
$("#groupList").append(liHtml);
alert($(this).attr("ows_Title"));
});
}
});
}
没有错误,除了: jquery-3.1.1.min.js:4 [Deprecation]主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用。
有没有办法让我看到这次通话中哪些不起作用?
答案 0 :(得分:1)
您需要修改几件事。
1)建议将jQuery 1.11.x与SP Services一起使用。所以,请更改它以使用此jQuery库
2)SPGetCurrentSite用于获取当前站点,而您需要从sharepoint列表中获取项目。为此,您需要使用GetListItems
方法
3)您需要在ViewFields中使用字段的内部名称而不是显示名称。
4)您的CAML查询不正确,因为您现在已删除Where
子句,因为您没有过滤它。只需将其更改为获取有序数据。
尝试并修改以下代码:
$(document).ready(function(){
GetList();
console.log("Ts");
});
function GetList() {
$().SPServices({
operation : "GetListItems",
async: true,
listName : "ESA Mailing Group Subscribers",
CAMLViewFields : "<ViewFields><FieldRef Name='Title' /></ViewFields>",
CAMLQuery: "<Query><OrderyBy><FieldRef Name='Title'/></OrderBy></Query>",
completefunc : function (xData, Status){
console.log("Dat");
$(xData.responseXML).SPFilterNode("z:row").each(function() {
var liHtml = "<tr><td>" + $(this).attr("ows_Title") + "</td></tr>";
$("#groupList").append(liHtml);
alert($(this).attr("ows_Title"));
});
}
});
}
不确定为什么SPServices无法正常工作,但是在2013年我们可以访问REST API端点。因此,您也可以尝试使用以下代码:
$(document).ready(function(){
GetList();
console.log("Ts");
});
function GetList(){
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('ESA Mailing Group Subscribers')/items?$orderby=Title asc",
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
for(var i=0;i < data.d.results.length;i++){
var liHtml = "<tr><td>" + data.d.results[i].Title + "</td></tr>";
$("#groupList").append(liHtml);
}
},
error: function (data) {
console.log(data);
}
});
}