6

我有一个 SharePoint URL,它只是一个包含一些数据列和行的 SharePoint 列表。

我想从该特定 URL 读取该信息,并通过 JavaScript 函数将数据放在 HTML 文件中。

我完全没有 JavaScript 和 HTML5 的经验,所以我不知道如何调用这些函数来检索数据。

这就是我到目前为止所拥有的,它根本不起作用:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title></title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width">
</head>

<script type="text/javascript" src="filelink/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="filelink/jquery.SPServices-0.6.2.min.js"></script>
<script language="javascript" type="text/javascript">
    $(document).ready(function() {
      $().SPServices({
        operation: "GetListItems",
        webURL: "http://myURL.aspx",
        async: false,
        listName: "Announcements",
        CAMLViewFields: "<ViewFields><FieldRef Name='Title' /></ViewFields>",
        completefunc: function (xData, Status) {
          $(xData.responseXML).SPFilterNode("z:row").each(function() {
            var liHtml = "<li>" + $(this).attr("ows_Title") + "</li>";
            $("#tasksUL").append(liHtml);
          });
        }
      });
    });
</script>
<ul id="tasksUL"/>  
<body>
</body>
</html>

如果我尝试打开 index.html 没有任何反应,所以我不知道如何调用我的 HTML 文件上的函数。另外,我不知道如何在 HTML 文件中定义 SP.ClientContext 。

提前非常感谢。

4

3 回答 3

3

SPServices 库会很容易地为您做到这一点。

你会想要使用这个调用。我通常将它封装在我自己的函数中以使代码更漂亮,尤其是在我进行大量 AJAX 列表查询时。

基本上,SharePoint 将返回一个丑陋的 XML 文档,其中包含Microsoft 文档定义的所有列表项。您将使用 SPServices 遍历此文档,如下所示:

<script type="text/javascript" src="filelink/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="filelink/jquery.SPServices-0.6.2.min.js"></script>
<script language="javascript" type="text/javascript">

$(document).ready(function() {
  $().SPServices({
    operation: "GetListItems",
    async: false,
    listName: "Announcements",
    CAMLViewFields: "<ViewFields><FieldRef Name='Title' /></ViewFields>",
    completefunc: function (xData, Status) {
      $(xData.responseXML).SPFilterNode("z:row").each(function() {
        var liHtml = "<li>" + $(this).attr("ows_Title") + "</li>";
        $("#tasksUL").append(liHtml);
      });
    }
  });
});
</script>
<ul id="tasksUL"/>`

逐行:
<script type="text/javascript" src="filelink/jquery-1.6.1.min.js"></script>
SPServices 需要 JQuery
<script type="text/javascript" src="filelink/jquery.SPServices-0.6.2.min.js"></script>
包括 SPServices
$(document).ready(function() {
“加载 DOM 时,执行此函数”
$().SPServices({
“这是一个 SPServices 函数”
operation: "GetListItems",
“我们正在使用 'GetListItems' Web 服务”
async: false,
“不是异步的,现在就做”
listName: "Announcements",
“我们're using the list 'Announcements"
CAMLViewFields: "<ViewFields><FieldRef Name='Title' /></ViewFields>",
别管这行
completefunc: function (xData, Status) {
"当请求完成时运行这个函数。数据作为xData传递,完成状态作为Status传递"
$(xData.responseXML).SPFilterNode("z:row").each(function() {
"取响应字符串,只取"行” XML 节点。对于这些节点中的每一个,运行此函数...”
var liHtml = "<li>" + $(this).attr("ows_Title") + "</li>";
“创建一个名为 liHtml 的变量,它等于一个 li 标记和 XML 属性 ows_Title”
$("#tasksUL").append(liHtml);
“将此列表项附加到 ID 为 'tasksUL' 的元素”

于 2012-11-20T17:19:11.517 回答
0

你的代码有很多问题。

首先,它只能在 SharePoint 页面中工作,而不是像您使用 SP.ClientContext 等 SharePoint 函数那样独立。

其次,片段中似乎存在错误。例如,我认为this.collList实际上应该是var collList.

也许试试这个其他参考(但同样它只能在 SharePoint 2010 或 2013 页面中工作):

http://msdn.microsoft.com/en-us/library/hh185007(v=office.14).aspx

于 2012-11-20T18:09:47.803 回答
0

实际上,您使用的代码是用于由 Sympmarc 编写的 SPServices 库,并且在其文档中提到它将在 SharePoint Context 上运行的页面中使用,因为它使用 __REQUESTDIGEST 后变量进行调用,这将不可用普通的 HTML5 页面,我可以给你的选项是:-

1) 在 SharePoint 站点上启用基本 Http 身份验证,然后在您的服务调用中使用 jquery 的 $ajax 函数和基本身份验证凭据。

2)使用代码创建一个 http 处理程序来完成您的工作,然后从 jquery 传递 json 以从该处理程序中获取数据。

于 2013-06-11T13:25:01.807 回答