zoukankan      html  css  js  c++  java
  • SharePoint 2013 APP 开发示例 (四)JQuery访问REST

          这个示例里,我们将用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格式的结果:image

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

    13.选择application/atom-xml .
    14. 按  execute 按钮将会看到XML格式的结果。
    试着用其它REST URL看能返回什么数据, 我们可以在返回的数据里找到很多uri,如_api/Web/Lists等。

    SharePoint 2013 APP 开发示例 系列

  • 相关阅读:
    设置VMware Player中的虚拟机和宿主机共享文件
    C++20尝鲜:概念(Concepts)
    ReactiveX 学习笔记(31)ReactiveUI 使用笔记
    TypeScript语言学习笔记(4)枚举
    TypeScript语言学习笔记(3)函数,泛型
    趣味编程:FizzBuzz(Haskell版)
    Haskell语言学习笔记(95)Semiring
    Haskell语言学习笔记(94)Enum Bounded
    ReactiveX 学习笔记(30)操作符辨析
    ReactiveX 学习笔记(29)使用 RxCpp(RxQt)+ Qt 进行 GUI 编程
  • 原文地址:https://www.cnblogs.com/fengwenit/p/3554032.html
Copyright © 2011-2022 走看看