分类存档: JavaScript

HTTP 406 使用角 $http.get 针对 SharePoint 休息结束点时的错误

更新: 马克 AD ndersson 指出信息这个伟大的作品: http://blogs.office.com/2014/08/13/json-light-support-rest-sharepoint-api-released/. 这也解释了很多 :).

这可能是最糟糕的一篇博客文章标题过! 安美居.

我通常做所有我针对 O365 实例的原型. 我有我个人的实例,所以,我不需要担心影响别人. 顺便说一句 — — 记得当我们称之为进行虚拟机周围长满了苔藓 — — 我们笔记本电脑上 SQL Server, IIS, 决定 HYPER-V vs. VMWare? 安美居......

已经开发了一个应用程序,在这种环境不使用角, 除其他外, 这:

$http.get(serverUrl)
.成功(功能(数据, 状态, 标题, 配置) {

var getLinksResponse = 数据;

getLinksResponse.value.forEach(功能(结果) {

// 和这么泡沫

这两种不同 SharePoint 在线环境中工作正常. 不过, 当我的同事将其移植到一个 Cloudshare 实例时, 他正 HTTP 406 错误 (其中第一次我收到过那个, 所以...耶, 我想). 我们做了一些研究,发现"接受"标题关闭. SharePoint 在线感到满意:

接受: 应用程序/json

但 cloudshare 实例 (即 SP prem, 在虚拟服务器中承载) 想要经典"odata = 详细"以及在中添加:

接受: 应用程序/json;odata = 详细

要解决这个问题, 我们添加了这样的标题:

var config = {标题: {
接受: 应用程序/json;odata = 详细 '
}
};

$http.get(serverUrl,配置)
.成功(功能(数据, 状态, 标题, 配置) {

var getLinksResponse = 数据;

getLinksResponse.value.forEach(功能(结果) {

// 和这么泡沫

那摆脱 406, 但它也改变了响应的格式. 它是更多......详细. (哈哈!) 需要更多的变化,这里是最后的结果:

var config = {标题: {
接受: 应用程序/json;odata = 详细 '
}
};

$http.get(serverUrl,配置)
.成功(功能(数据, 状态, 标题, 配置) {

var getLinksResponse = 数据;

getLinksResponse.d.results.forEach(功能(结果) {

// 和这么泡沫

这只变成 30 我们的小问题, 所以我们很幸运. 希望有人发现这很有用.

</结束>

角未能在 IE9 中引导

我已经一直在玩 Angular.js 为最后一次长时,我的生活, 我不能我角的应用程序,在 IE9 推出。  他们都在 IE11 中工作正常,但是 IE9 将只显示大括号和类似的位.

我到处寻找,找不到任何人抱怨他的问题。  它在 Chrome 中工作正常, IE11, 只是没有 IE9.

是引发 IE 控制台给了我这样的错误的事实:

SEC7111: HTTPS 安全受到水库://ieframe.dll/forbidframing.htm

这一错误都迫使我思考没有下载的角一些问题,或者我需要其他库。  事实证明, 这并不是问题.

撬拨左右互联网, 我终于发现搜索所需的短语是"引导",似乎像失败的引导。  在结束, 我的问题是我装饰过我 <html> 标记与吴应用程序属性, 如在:

<html 吴 app ="MatrixApp">

井, 那不适合 IE9。  相反, 我裹在 HTML 中的其他一切 <正文> 里面一个 div 和引用 MatrixApp 那种方式.

解决问题.

希望这会节省某人一些悲伤.

</结束>

意识不断增强 / 采用各种 JavaScript 框架

我的同事, 贾韦德 · 安萨里 (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), 在他喜欢或至少一直在使用与 SharePoint 的框架写了简短的摘要博客帖子: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery 似乎一直在球场上的胜利者, 这么说, 现在年, 但其他人都更多的新和剧照排序的对抗它, 像角. (SPServices, 答案是肯定的, 多年来一直是一个生活的程序并将继续是因此,我认为).

人们在使用什么? 他们主要集中在微软的工具吗 (CSOM / JSOM) 或移动更多角, 淘汰赛, 余烬, 等?

我有这些非微软框架越来越偏向. 我认为微软的东西是与工作越来越难, 要求几乎一样的旧式服务器端开发人员的学习曲线.

在这里发表评论或以上 大苹果 SharePoint 如果你想讨论一下 (大苹果将会有一个很好的讨论的更多可能性).

</结束>

克服恼人的问题与 SharePoint 快速启动中的相对 Url

我想要将链接添加到快速启动导航那天和 SharePoint 告诉我:

image

纯文字版本的是:

确保该 URL 是有效的和开头也是有效的字符 (数字符号 (#) 或正斜杠 (/)) 或有效支持的协议 (例如, http://’, https://’, 文件://’, ftp://’, mailto:’, ' 新闻:’).

"Blech 和痘!"我说.

对此的解决方法是使用 JavaScript 在快速启动中查找已知的链接和重写其行为.

对此进行测试, 添加新链接到您的测试站点难耐:

image

我使用 jQuery. 解决这个问题, 得到一些 JavaScript 和 jQuery 拖到页上使用您喜欢的方法和代码像这样的一条线:

 

$(文档).准备好了( 功能 () {

    $("一:包含(测试 URL 替换)").单击(功能 () { 警报("更改的单击行为!"); 返回 false;});

});

鲍勃的你叔叔.

JQuery 选择器查找每个 <一> 标记在其名称中包含"测试 URL 替换". 您可能想要查找-曲调,根据您的链接和这种.

笔者(功能() 重写 SharePoint 将所做的一切当用户单击. 请确保您"返回 false",否则它会做你的东西,然后尝试 href 东西太, 几乎可以肯定不是你的目标.

这样做的和在 SharePoint 的在线环境中测试,但应该很好的工作 2010 和早些时候太.

</结束>

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