这个示例里,我们将用JQuery AJAX去发送一个 REST请求,并查看返回结果。为了让我们更好地理解REST 接口,我们将添加一个输入框让用户可以指定REST的URL, 这将让我们尝试着用构造的URL从SharePoint去获取信息。

首先,我们将创建一个 SharePoint-hosted app。然后我们将在APP的default页面添加输入框,最后我们将添加一个 view-model 去请求  REST并显示结果。

1. 打开 Visual Studio 2012.
2. 创建SharePoint 2013 app.
3. 选择SharePoint-hosted

4. 打开Default.aspx 页面.
5.添加 Knockout library.

<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1.js" ></script>

6. 替换PlaceHolderMain里面的内容:

<div>
<input type="text" data-bind="value: url" size="100" />
<br />
<br />
<select data-bind="value: format">
<option value="application/json;odata=verbose">application/json;odata=verbose</option>
<option value="application/atom-xml">application/atom-xml</option>
</select>
<br />
<br />
<input data-bind="click: onRunRequest" type="button" value="Execute the REST Request" />
<br />
<br />
<h1 data-bind="text: status"></h1>
<p data-bind="text: message" />
</div>

7. 保存并关闭Default.aspx.

这个页面将提供一个 text box 让用户可以输入REST的URL, 一个drop-down list让用户可以选择数据格式,一个 button 去请求REST。返回的结果将显示在页面最下方。

8. 打开 App.js .

9. 替换下面的内容:

var appweburl = decodeURIComponent(getQueryStringParameter("SPAppWebUrl"));
var hostweburl = decodeURIComponent(getQueryStringParameter("SPHostUrl")); $(function () { ko.applyBindings(new defaultViewModel()); }); function defaultViewModel() {
var self = this; self.status = ko.observable();
self.message = ko.observable();
self.url = ko.observable("/_api/web");
self.format = ko.observable(); self.result = null; self.onRunRequest = function () {
jQuery.ajax({
url: appweburl + self.url(),
type: "GET",
headers: {
"accept": self.format(),
},
success: Function.createDelegate(self, self.onComplete),
error: Function.createDelegate(self, self.onComplete)
});
}; self.onComplete = function (data, status) {
self.status(status); if (self.format() == 'application/atom-xml') {
self.result = data;
self.message((new XMLSerializer()).serializeToString(data));
} else {
self.result = data.d;
self.message(JSON.stringify(data));
}
}
} // Utility routine
function getQueryStringParameter(paramToRetrieve) {
var params =
document.URL.split("?")[1].split("&");
var strParams = "";
for (var i = 0; i < params.length; i = i + 1) {
var singleParam = params[i].split("=");
if (singleParam[0] == paramToRetrieve)
return singleParam[1];
}
}

onRunRequest() function  初始化异步的 REST 请求
•• url—它被用来访问app web,因为这个页面在同一个domain里运行,所以它不是跨domain的请求。

•• type—指定是 GET 操作,而不是  POST.

•• headers—我们用"accept" header 来指定我们希望收到的数据格式

•• success—请求成功的事件

•• error—请求成功但有error的事件

onComplete() function 同时处理了有error和没有error的情况.

10. 保存App.js file.

11. 按 F5 开始debug.

12. 当Default.aspx page 打开的,按  execute 按钮将会看到JSON格式的结果:

很多属性都被返回到了 _deferred 里. 这些值没有被选在query里,但是能用REST请求的URL获取到.

13.选择application/atom-xml .

14. 按  execute 按钮将会看到XML格式的结果。

试着用其它REST URL看能返回什么数据, 我们可以在返回的数据里找到很多uri,如_api/Web/Lists等。

SharePoint 2013 APP 开发示例 系列

SharePoint 2013 APP 开发示例 (四)JQuery访问REST的更多相关文章

  1. SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API)

          虽然 JQuery 也能通过授权header实现跨域, 但SharePoint 提供了更简单的方法,它被实现在SP.RequestExecutor里 .它能访问跨域的服务包括REST AP ...

  2. SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)

    上个示例(SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API))是基于JavaScript,运行在web browser内去访问REST AP ...

  3. SharePoint 2013 APP 开发示例 系列

    SharePoint 2013 APP 安全: SharePoint 2013 APP 开发示例 (一)List 读写 SharePoint 2013 APP 开发示例 (二)获取用户信息 Share ...

  4. SharePoint 2013 APP 开发示例 (三)使用远程的web资源

    在这个示例里我们将详细介绍 TokenHelper 类, 我们将看到它是怎么简单地从远程web站点访问SharePoint的.我们还将取到它的一些值.这将帮助我们理解连接是怎么被构造的,同时也方便我们 ...

  5. SharePoint 2013 APP 开发示例 (一)List 读写

    在这个示例里,我们将创建一个页面测试 SharePoint APP的权限.这个页面有二个按钮,一个从documents里读数据,一个往documents里写数据: 1. 打开Visual Studio ...

  6. SharePoint 2013 APP 开发示例 (二)获取用户信息

    SharePoint 2013 APP 开发示例 (二)获取用户信息 这个示例里,我们将演示如何获取用户信息: 1. 打开 Visual Studio 2012. 2. 创建一个新的  SharePo ...

  7. SharePoint 2013 App 开发—Auto Hosted 方式

    Auto Hosted 方式,自动使用Windows Azure来作为host,这种模式将App 发布到Office 365上的SharePoint Developer Site上.这种方式可以不用花 ...

  8. SharePoint 2013 App 开发—SharePoint Hosted方式,

    这篇文章会依据简单的Demo,介绍一下SharePoint Hosted 方式开发App 的步骤和说明. 这种方式的环境相比较Office 365 要麻烦一些,如果不可以连接到Internet 或者还 ...

  9. SharePoint 2013 App 开发—App开发概述

    基于安全性的考虑,SharePoint App 不能像其它两种方式一样,直接使用安全性更高的服务端代码的API.Javascript 扮演极为重要的角色,在SharePoint App中与ShareP ...

随机推荐

  1. SpringMVC之单/多文件上传

    1.准备jar包(图标所指必备包,其他按情况导入) 2.项目结构 3.SingleController.java(控制器代码单文件和多文件) package com.wt.uplaod; import ...

  2. 面试4——java进程和线程相关知识

    1.线程和进程的概念.并行和并发的概念

  3. C#编程:从控制台读取数字的两种方式

    有时需要从控制台输入数字,就用到前面介绍的内容,数据转换,如:int num=int.Pares(Console.ReadLine()); int num=Convert.ToInt32(Consol ...

  4. 我的devops实践经验分享一二

    前言 随着系统越来越大,开发人员.站点.服务器越来越多,微服务化推进,......等等原因,实现自动化的devops越来越有必要. 当然,真实的原因是,在团队组建之初就预见到了这些问题,所以从一开始就 ...

  5. 从源码的角度看 React JS 中批量更新 State 的策略(下)

    这篇文章我们继续从源码的角度学习 React JS 中的批量更新 State 的策略,供我们继续深入学习研究 React 之用. 前置文章列表 深入理解 React JS 中的 setState 从源 ...

  6. MySQL高可用架构-MHA环境部署记录

    一.MHA介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司) ...

  7. Docker容器学习梳理 - 容器时间跟宿主机时间同步

    在Docker容器创建好之后,可能会发现容器时间跟宿主机时间不一致,这就需要同步它们的时间,让容器时间跟宿主机时间保持一致.如下: 宿主机时间 [root@slave-1 ~]# date Fri M ...

  8. LINUX内核分析第六周学习总结——进程的描述与创建

    LINUX内核分析第六周学习总结--进程的描述与创建 标签(空格分隔): 20135321余佳源 余佳源 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc ...

  9. js数组的用法

    1.数组 - - 添加元素 arr.push('abc')  向数组尾部添加元素,返回值为数组的长度 arr.unshift('abc')  向数组头部添加元素,返回值为数组的长度 2.数组 - - ...

  10. 查询部门----返回给前台TreeView数据格式的数据

    实体类: public class AddressTreeDto { private Long id; private String text;//位置名称 private Long pId;//上一 ...