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