如何使用Jquery检索Sharepoint List数据

时间:2013-02-16 10:01:41

标签: javascript jquery sharepoint sharepoint-2013

我正在尝试使用Jquery检索列表数据。但我得到的整个列表Html页面不是列表中的值。 Jquery代码如下

<script src="../_layouts/15/SharePointProject1/Scripts/jquery-1.3.2.js"></script>
<script language = "javascript" type="text/javascript">
    function GetAnnouncementData() {
        var soapPacket = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
   <soapenv:Body> \
    <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
     <listName>Temp</listName> \
     <viewFields> \
      <ViewFields> \
        <FieldRef Name='Title' /> \
      </ViewFields> \
     </viewFields> \
    </GetListItems> \
   </soapenv:Body> \
  </soapenv:Envelope>";
        jQuery.ajax({
            url: "http://serverName/Lists/Temp/listsView.aspx",
            type: "POST",
            dataType: "xml",
            data: soapPacket,
            complete: processResult,
            contentType: "text/xml; charset=\"utf-8\""
        });
    }

    function processResult(xData, status) {
        //jQuery(xData.responseXML).find("z\\:row").each(function () {
        //    $("<li>" + $(this).attr("ows_Title") + "</li>").appendTo("#AnnouncementData");
        //});
        //alert($(this).attr("ows_Title"));
        alert(xData.responseText);
        //alert(status.toString());
        document.getElementById("tarea").value = xData.responseText;
        document.getElementById("div1").innerHTML = xData.responseText;
    }
    $(document).ready(function () {
        GetAnnouncementData();
    });
</script>

这段代码给我列表页面没有列出数据。我试图在div标签中获取xml文件,以便我可以查看它返回给我的内容。它返回该列表的HTML页面 请帮助。

3 个答案:

答案 0 :(得分:10)

对我来说,最好的选择是使用REST接收数据作为json,更清洁,更容易使用。

另外,好处是SharePoint上的REST调用是使用Linq进行的,因此在创建查询时这样更灵活,例如你可以做更好的分页,而不是使用sharepoint的糟糕分页只允许你做下一个项目。

var ajaxCall = $.getJSON("http://SharePointSiteUrl/_vti_bin/listdata.svc/ListName");

ajaxCall.success(function (jsonData) { callbackSuccessFunction(jsonData.d.results); });
ajaxCall.error(function () { callbackErrorFunction({ status: 'error', data: 'error message.' }); });

返回的数据将以以下格式作为json接收:

{d: {results: [arrays of items]}

如果你需要知道列表的名称来进行其余的调用,只需调用url:

http://SharePointSiteUrl/_vti_bin/listdata.svc/

以下是一些信息:http://msdn.microsoft.com/en-us/library/ff798339.aspx

我希望它有所帮助。

答案 1 :(得分:3)

您是否检查了您为访问列表而提供的URL。

url: "http://serverName/Lists/Temp/listsView.aspx",

如果您正在访问本地计算机,则在此URL中,您必须以服务器名称提供localhost。

url: "http://localhost:80/Lists/Temp/listsView.aspx",

尝试使用此功能,让我知道它是否有效。

答案 2 :(得分:1)

一个老问题,但帮助其他人寻找答案......

“使用jQuery检索列表数据”的最简单方法是使用SharePoint URL协议。它可以以XML格式返回列表数据,不需要您构建SOAP请求。您只需要列表GUID和ows_属性名称(使用FireBug来检查返回的XML)。

下面的简单示例将显示公告数据。将代码粘贴到SharePoint网站上的空HTML页面中,并将 siteUrl listId 值替换为您自己的值。

Microsoft参考:URL Protocol

如果您需要做的不仅仅是阅读列表数据,那么请查看 Marc D Anderson jQuery.SPServices

<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">

/* Tested with WSS3,IE9,FF19 */

$(document).ready( function() {

    var siteUrl = "//london",
        listId  = "{1EC2EC89-B3DC-434D-A63E-AAEBF72E4E89}";

$.get( siteUrl + "/_vti_bin/owssvr.dll?Cmd=Display&XMLDATA=TRUE&List=" + listId, 
    function( xml ) {
        var zrow = xml.getElementsByTagName("z:row");
        for(var i=0; i<zrow.length; i++) {
            $("#table1 tbody").append( 
            "<tr><td>"
            + zrow[i].getAttribute("ows_Attachments")
            + "</td><td>"
            + zrow[i].getAttribute("ows_LinkTitle") 
            + "</td><td>" 
            + zrow[i].getAttribute("ows_Body") 
            + "</td></tr>" 
            );
        }
});
});

</script>

<table id="table1">
<caption>Announcements</caption>
<tbody></tbody>
</table>

</body>
</html>