我试图将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。您可以提出的任何建议将不胜感激!我敢肯定,这太小了,我无法解决!
谢谢!
您是否已验证引用了正确的字段名称?
您在其中定义的CAML查询soapEnv要求使用字段的 内部 名称,而不是其显示名称。我保证这Metric Name是不对的;它可能是类似Metric_x0020_Name或类似的东西。
soapEnv
Metric Name
Metric_x0020_Name
您如何确定字段的内部名称?有两种方法。
让我向您介绍一个名为U2U CAML Query Builder的强大实用程序。这应该在每个SharePoint开发人员的工具箱中。启动它,将其指向正确的列表(如果不在服务器上,则通过SharePoint Web Service连接),它将允许您使用字段的显示名称来构建CAML查询,但会为以下项生成正确的基础CAML:您。这对于构造复杂的过滤器和布尔逻辑也非常有用,而且它使您可以运行查询并获得即时反馈。
获取字段名称的另一种方法是导航到列表设置,然后单击感兴趣的字段的名称。检查URL并查找名为的querystring参数&Field。它将泄露该字段的内部名称。如果您使用的是Internet Explorer,则此值将为“ URL编码”(一个简单的在线解码器可以帮助解密该值),但是,如果您使用Firefox,则会看到该值未编码。
&Field
将正确的字段名称插入CAML查询中,然后再旋转一次。