原創|使用教程|編輯:郝浩|2013-04-03 11:25:36.000|閱讀 837 次
概述: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@fc6vip.cn
文章轉載自:慧都控件