标记档案: JavaScript

快速、 方便: 创建使用其余的 SharePoint 站点

有很多的周围显示资源如何执行此操作, 但我找不到一个全面转到链接, 所以在这里我们是.

您可以创建使用其他 API 的 SharePoint 站点。  这里是一个完全被烘烤的示例:

<!--
    SiteRequestForm.html: 收集信息,并为该用户创建一个站点.
-->

<中心>
<>
    <tr>
        <运输署>站点名称:</运输署>
        <运输署><输入 类型="文本" 名称="SiteName" id="SiteName" /></运输署>
    </tr>
    <tr>
        <运输署 colspan="2">
            <输入 类型="提交" id="CreateSiteButton" 价值="创建网站" />
        </运输署>
    </tr>
</>
</中心>

<脚本 src="../Plugins/jquery-1.11.0.min.js"></脚本>

<脚本>
var CreateSiteLogicContainer = {

    createSiteData: {
            "参数": {
                __metadata: { "类型": "SP。WebInfoCreationInformation" },
                Url: "Paultest1",
                标题: "Paultest1",
                说明: "其余创建 web 由保罗!",
                语言: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: false
            }
    },

    createSite: 功能 () {

        jQuery.support.cors = true;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").瓦尔();
        
        $.ajax({
            url: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            方法: "开机自检",

            标题: {
                "接受": "应用程序/json; odata = 详细",
                "内容类型": "应用程序/json;odata = 详细",
                "X-RequestDigest": $("# __REQUESTDIGEST").瓦尔()
            },

            数据: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            成功: 功能 () { 警报("成功"); },
            错误: 功能 () { 警报("错误"); }

        });
    },

    wireUpForm: 功能 () {
        $("#CreateSiteButton").单击(功能 () {
            警报("努力尝试,并创建网站。");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</脚本>

当成功时, 你得到一个 JSON 数据包中像这样的反应:

image

我的主要思想和知识包括从:

  • 此方法使用 jQuery。  以我为例, 我 jQuery 库位于"....../ 插件."  你会想要更改,使其指向您最喜爱的 JQ 位置.
  • 您可以复制并粘贴到页面上的内容编辑器 Web 部件的那整个代码段,它应该可以正常。  你会想要改变的 API 调用的结束点,请确保您正确地引用 JQ.
  • 该 URL 是相对于您的 API 的终结点。  以我为例, 它创建子网站下方 https://bigapplesharepoint.com
  • 您不需要提供一个内容长度. 一些博客文章和 MSDN 文档意味着你做, 但对我来说会自动发生, 我猜这是正在处理的 $虽然调用本身.
  • 这条线有需要提供避免"禁忌"的响应: "X-RequestDigest": $("# __REQUESTDIGEST").瓦尔().  还有其他的方法去做, 但这是很好。  提供此快捷方式的博客,我失去了联系。  H/T 到你, 神秘的博客!

好运,希望这可以帮助一个人出去.

</结束>

undefined订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

快速和简单: SharePoint 其余部分调用仅返回 100 记录

我一直在一个公共的面对网站上为我的 SharePoint 实践中 纽约 然后使用大量的 JavaScript 和休息的来电显示的内容.

期间主线发展, 我只是创建一个小的数据集与 10 或所以我休息电话和自定义列表中的行从那里拉扯了。  一次我撞了要有几个几百行的数据来测试预期的增长的列表, 我发现我正正好 100 返回回在我休息的电话行.

这是非常简单的事情到地址。  以我为例 (在大多数情况下,我相信), 默认的其余部分调用到 SharePoint (和可能作为一种工业标准?) 返回 100 行。  要比默认值更多的回报, 在您的电话上使用 $top 参数, 如在:

得到 /Insights Dev/_api/web/lists/GetByTitle('' MockBlog)/项目?$选择 = ID,标题,类别/标题,Blog_x0020_Author/标题,DatePublished,BlogSummary&$扩大 = Blog_x0020_Author,类别&$筛选器 =&$顶部 = 9999

我拿起 9999 在这种情况下既然都知道,正常的生长发育, 不会有多个 200 或者,所以一年中,我们已添加到此列表中行。  如果它变得笨拙, 我们可以实现一些分页在路上.

</结束>

undefined订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

可怜的人在 JavaScript 中的缓存

[TL;博士版本: 使用 cookie 来存储异步调用的结果; 立即呈现过去异步调用的结果,然后在页面加载后验证它们。]

我一直在 SharePoint 的内联网网站为客户端的功能, 除其他外, 程式化的二级导航菜单选项都通过定期的老自定义列表管理。  想法是在客户端获取,不影响或受影响,由它推出的全球导航控制"他们的"网站的菜单.

(有件事令人难以置信颠覆有关添加指向一个 HTML 文件,加载一些 CSS 和 JS,从根本上改变几乎一切有关站点的行为......,但那是另一篇文章为 CEWP)

这个漂亮的简单的代码:

痛点这里是,每次有人点击其中一个站点的页面, 该用户的 web 浏览器伸出手来获取列表中的项。  一旦开发完成并测试已被证明是稳定和完整的东西, 此调用是不必要的多 99% 因为菜单中很少发生变化的时间。  它也有一个怪异的 UI 影响这是常见的这个勇敢新世界的超 ajaxy web 站点 — — 呈现页和菜单只然后呈现。  它是紧张不安,在我看来让人分心。  和紧张不安. 所以, 缓存。 

我修改了逻辑广交:

  • 查找包含菜单中,当我最后读到它的浏览器中的 cookie
    • 如果发现, 立即呈现它。  不要等待页面完成加载。  (您需要确保您的 HTML 战略性地放在这里, 但它是不难做到).
  • 等待页面完成加载,使异步调用以加载菜单项从列表中使用休息或 lists.asmx 或不管了
  • 比较与 cookie 得到了什么
    • 如果它匹配, 停止
    • 否则, 使用 jQuery, 如果动态填充一束 <李>中 <ul>
  • 使用 CSS 来做的所有格式
  • 利润!

你们中的一些将要说的话, "嘿,你! 有是没有真正缓存会在这里因为你反正读菜单中 每一次.”  你说得对 — — 我不会给服务器任何种类的休息。  但因为该调用是异步和发生后页面的初始 HTML 有效载荷完全呈现, 它"感觉"更能响应用户。  菜单中将呈现相当多为页绘制。  如果菜单中发生的变化, 用户被受到紧张不安重新绘制菜单, 但仅此一次.

有一些方法可以使此缓存更有效,同时也帮助了服务器:

  • 在"cookie 缓存"是有效的最低限度的规则中 24 小时或一些其他时限. 只要没有过期的 cookie, 使用 cookie 的菜单快照和永远不会撞到服务器.

好,这就是一切,现在我想 :). 

如果任何人有任何聪明的想法在这里我想知道他们.

最后 — — 这种技术可以用于其他的东西。  此客户机的页面在各种页面上有大量的数据驱动的事情, 很多人改变相对地很少 (如每周或每月一次).  如果您针对特定地区的功能, 你可以通过从本地 cookie 存储拉内容并立即呈现给一个响应更快的用户界面。  它感觉快到用户即使你不节省服务器任何周期。  你 可以 通过一些条件和触发器决定作废这本地 cookie 缓存保存服务器周期。  这就是所有情景和艺术的东西和真正最大的乐趣 :). 

</结束>

undefined订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin