如何使用rest(使用CAML)在sharepoint列表中的超链接列上应用过滤器?

时间:2018-01-18 10:10:43

标签: javascript sharepoint

我想从变量'project_url'

中获取siteUrl包含值的项目
var project_url = _spPageContextInfo.webServerRelativeUrl;

    var queryText = "<Where><Contains><FieldRef Name='SiteUrl' /><Value Type='URL'>" + project_url + "</Value></Contains></Where>";

    var viewXml = '<View><Query>' + queryText + '</Query></View>';
    var webserviceUrl = _spPageContextInfo.siteAbsoluteUrl + "/_api/web/Lists(guid'eb0ba220-73e8-428f-b848-92b606aa74d8')/items?$select=ID,Title,MembersId,AccessTYpe,OrganizationalUnitId,SiteUrl"; 

    var queryPayload = {
        'query' : {
            '__metadata': { 'type': 'SP.CamlQuery' }, 
            'ViewXml' : viewXml,
        }
    };

    $.ajax({
        url: webserviceUrl,
        method: "POST",
        data: JSON.stringify(queryPayload),
        headers: {
            "X-RequestDigest": document.getElementById("__REQUESTDIGEST").value,
            "Accept": "application/json; odata=verbose",
            "content-type": "application/json; odata=verbose"
        },
        success: function (data) {
            console.log(data);
        },
        error: function (data) {
            console.log("AllTasks Error -", data);
        }
    });

我收到了这个错误:

  

'“{”error“:{”code“:” - 1,Microsoft.SharePoint.Client.InvalidClientQueryException“,”message“:{”lang“:”en-US“,”value“:”一个条目找不到类型名称,但未指定预期类型。要允许没有类型信息的条目,还必须在指定模型时指定预期类型。“}}}”''

1 个答案:

答案 0 :(得分:1)

您需要点击GetItems端点。

另外,更改CAML查询以使用BeginsWith而不是Contains

修改您的代码如下:

var project_url = _spPageContextInfo.webAbsoluteUrl;

var queryText = "<Where><BeginsWith><FieldRef Name='SiteUrl' /><Value Type='URL'>" + project_url + "</Value></BeginsWith></Where>";

var viewXml = '<View><Query>' + queryText + '</Query></View>';
var webserviceUrl = _spPageContextInfo.siteAbsoluteUrl + "/_api/web/Lists(guid'eb0ba220-73e8-428f-b848-92b606aa74d8')/GetItems"; 

var queryPayload = {
    'query' : {
        '__metadata': { 'type': 'SP.CamlQuery' }, 
        'ViewXml' : viewXml,
    }
};

$.ajax({
    url: webserviceUrl,
    method: "POST",
    data: JSON.stringify(queryPayload),
    headers: {
        "X-RequestDigest": document.getElementById("__REQUESTDIGEST").value,
        "Accept": "application/json; odata=verbose",
        "content-type": "application/json; odata=verbose"
    },
    success: function (data) {
        console.log(data);
    },
    error: function (data) {
        console.log("AllTasks Error -", data);
    }
});