小编典典

将SharePoint SOAP与jQuery GetListItems结合使用-简单但无法解决!

ajax

我试图将SharePoint列表加载到无序列表中,以便创建一个简单的搜索功能(Sharepoint Search太可怕了)。我借用和修改的代码如下:

$(document).ready(function() {
        var soapEnv =
            "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
                <soapenv:Body> \
                     <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
                        <listName>Metric_Audit</listName> \
                        <viewFields> \
                            <ViewFields> \
                <FieldRef Name='ReportName' /> \
                <FieldRef Name='Metric Name' /> \
                           </ViewFields> \
                        </viewFields> \
                    </GetListItems> \
                </soapenv:Body> \
            </soapenv:Envelope>";

        $.ajax({
            url: "http://teamspace.intranet.group/sites/CSI/ID/DB/_vti_bin/lists.asmx",
            type: "POST",
            dataType: "xml",
            data: soapEnv,
            complete: Result,
            contentType: "text/xml; charset=\"utf-8\""
        });
    });


    function Result(xData, status) {
        $(xData.responseXML).find("z\\:row").each(function() {
            var liHtml = "<li>" + $(this).attr("ows_ReportName") + "</li>";
            $("#MetricsUL").append(liHtml);
        });
    }
});

<ul id="MetricsUL"/>

它按原样填充列表,但是所有项目的名称均为“ undefined”。我尝试删除空格等都无济于事,当我将列表更改为“任务”列表时,它工作正常。

一直盯着AGES。您可以提出的任何建议将不胜感激!我敢肯定,这太小了,我无法解决!

谢谢!


阅读 250

收藏
2020-07-26

共1个答案

小编典典

您是否已验证引用了正确的字段名称?

您在其中定义的CAML查询soapEnv要求使用字段的 内部 名称,而不是其显示名称。我保证这Metric Name是不对的;它可能是类似Metric_x0020_Name或类似的东西。

您如何确定字段的内部名称?有两种方法。

让我向您介绍一个名为U2U CAML Query
Builder
的强大实用程序。这应该在每个SharePoint开发人员的工具箱中。启动它,将其指向正确的列表(如果不在服务器上,则通过SharePoint Web
Service连接),它将允许您使用字段的显示名称来构建CAML查询,但会为以下项生成正确的基础CAML:您。这对于构造复杂的过滤器和布尔逻辑也非常有用,而且它使您可以运行查询并获得即时反馈。

获取字段名称的另一种方法是导航到列表设置,然后单击感兴趣的字段的名称。检查URL并查找名为的querystring参数&Field。它将泄露该字段的内部名称。如果您使用的是Internet
Explorer,则此值将为“ URL编码”(一个简单的在线解码器可以帮助解密该值),但是,如果您使用Firefox,则会看到该值未编码。

将正确的字段名称插入CAML查询中,然后再旋转一次。

2020-07-26