SharePoint GetListItems无法正常工作

时间:2017-09-28 15:25:52

标签: jquery sharepoint

我正在尝试从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因其对最终用户体验的不利影响而被弃用。

有没有办法让我看到这次通话中哪些不起作用?

1 个答案:

答案 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);
            }
    });
}