4

我正在尝试使用 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 页面。
请帮忙。

4

3 回答 3

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

我希望它有所帮助。

于 2013-03-24T04:06:53.323 回答
3

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

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

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

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

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

于 2013-03-30T07:24:50.583 回答
1

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

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

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

Microsoft 参考:URL 协议

如果您需要做的不仅仅是读取列表数据,请查看 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>
于 2013-03-23T22:49:37.687 回答