彩票走势图

DevExpress DXTREME使用教程:如何使用ODataStore实现POST tunneling

原创|使用教程|编辑:郝浩|2013-04-03 11:25:36.000|阅读 775 次

概述:DXTREME ENTERPRISE由于不是每个服务都允许合并和删除方法的请求,这使得它很难执行更新和删除操作,下面这个解决方案是主要是实现POST tunneling。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

    DXTREME ENTERPRISE由于不是每个服务都允许合并和删除方法的请求,这使得它很难执行更新和删除操作,下面这个解决方案是主要是实现POST tunneling:使用POST方法发送请求,但使用X-HTTP-Method header指定一个适当的方法。本文描述了如何使用ODataStore实现这个功能。

    ODataStore提供beforeSend选项,允许你提供一个回调函数,将之前的请求发送到服务器。在这个函数中,这个请求是可以进行定制的。

    这个功能将帮助我们添加请求的文件头,以及更改对于POST的请求方法。

var db = new DevExpress.data.ODataContext({
  url: "/api.svc",
  jsonp: true,
  errorHandler: function (error) {
    alert(error.message);
  },
  beforeSend: function(xhr) {
    if (xhr.method == 'MERGE' || xhr.method == 'DELETE') {
        xhr.headers['X-HTTP-Method'] = xhr.method;
        xhr.method = 'POST';
    }
  },
  entities: {
    Messages: { key: "ID" },
    ToDoLists: { key: "ID" },
  }
});

    如果你使用了DXTREME多通道应用程序项目模板来创建应用程序,可以按照下面的方法在db.js文件中修改代码:

/// <reference path="../js/jquery-1.7.2.min.js"; />
/// <reference path="../js/knockout-2.1.0.js"; />
/// <reference path="../js/dxtreme.core-12.2.js"; />

(function() {
    var endpointSelector = new DevExpress.EndpointSelector(DxSample.config.endpoints);

    var serviceConfig = $.extend(true, {}, DxSample.config.services, {
        db: {
            url: endpointSelector.urlFor("db"),
            // To enable JSONP support, uncomment the following line
            //jsonp: !window.WinJS,

            errorHandler: handleServiceError,
            beforeSend: handleServiceRequest
        }
    });

    function handleServiceError(error) {
        if(window.WinJS) {
            try {
                new Windows.UI.Popups.MessageDialog(error.message).showAsync();
            } catch(e) {
                // Another dialog is shown
            }
        } else {
            alert(error.message);
        }
    }

    function handleServiceRequest(xhr) {
        if (xhr.method == 'MERGE' || xhr.method == 'DELETE') {
            xhr.headers['X-HTTP-Method'] = xhr.method;
            xhr.method = 'POST';
        }
    }

    // Enable partial CORS support for IE < 10
    if($.browser.msie)
        $.support.cors = true;
    
    DxSample.db = new DevExpress.data.ODataContext(serviceConfig.db);

}());




标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:慧都控件

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP