SAPUI5-未定义OData

SAPUI5-未定义OData,odata,sapui5,Odata,Sapui5,我正在尝试向sap网关服务发送一些数据。 我使用这个方法“save”,但是当我在代码中尝试这样做时,我得到一个错误“OData未定义” 下面是我尝试这样做的方法 handleConfirmationMessageBoxPress: function(oEvent) { var bCompact = !!this.getView().$().closest(".sapUiSizeCompact").length; MessageBox.confirm

我正在尝试向sap网关服务发送一些数据。 我使用这个方法“save”,但是当我在代码中尝试这样做时,我得到一个错误“OData未定义”

下面是我尝试这样做的方法

        handleConfirmationMessageBoxPress: function(oEvent) {
        var bCompact = !!this.getView().$().closest(".sapUiSizeCompact").length;
        MessageBox.confirm(
            "Deseja confirmar a transferência?", {
                icon: sap.m.MessageBox.Icon.SUCCESS,
                title: "Confirmar",
                actions: [sap.m.MessageBox.Action.OK, sap.m.MessageBox.Action.CANCEL],
                onClose: function(oAction) {
                    if (oAction == "OK") {
                        var oParameters = {};
                        oParameters.loginfrom = this.getView().byId("multiInput").getValue();
                        oParameters.loginfrom = this.getView().byId("loginPara").getValue();
                        oParameters.loginfrom = this.getView().byId("datade").getValue();
                        oParameters.loginfrom = this.getView().byId("datapara").getValue();

                        OData.request({
                            requestUri : "http://<host name>:<port no>/sap/opu/odata/sap/ZMM_EMP_SRV/EmployeeSet",
                            method : "GET",
                            headers : {...}
                                        },
                                        function(data, response) {
                                                 ...
                                                    var oHeaders = {
                                         ... };
                            OData.request({
                                                    requestUri : "http://<host name>:<port no>/sap/opu/odata/sap/ZMM_EMP_SRV/EmployeeSet",
                                                    method : "POST",
                                                    headers : oHeaders,
                                                    data:oParameters
                                        },
                                                    function(data,request) {
                                                    MessageToast.show("Transferência realizada!");       
                                                    location.reload(true);
                                        },          function(err) {
                                                    MessageToast.show("A transferência falhou!");
                                        });
                            }, function(err) {
                                                    var request = err.request;
                                                    var response = err.response;
                                                    alert("Error in Get — Request " + request + " Response " + response);
                                        });  


                    } else {
                        ...
handleConfirmationMessageBoxPress:功能(oEvent){
var bCompact=!!this.getView().$().closest(“.sapuizizecompact”).length;
MessageBox.confirm(
“是否确认转让?”{
图标:sap.m.MessageBox.icon.SUCCESS,
标题:“确认人”,
操作:[sap.m.MessageBox.Action.OK,sap.m.MessageBox.Action.CANCEL],
onClose:函数(OAAction){
如果(OAAction==“OK”){
变量运算参数={};
oParameters.loginfrom=this.getView().byId(“多输入”).getValue();
oParameters.loginfrom=this.getView().byId(“loginPara”).getValue();
oParameters.loginfrom=this.getView().byId(“datade”).getValue();
oParameters.loginfrom=this.getView().byId(“datapara”).getValue();
奥达塔请求({
requestUri:“http://:/sap/opu/odata/sap/ZMM_EMP_SRV/EmployeeSet”,
方法:“获取”,
标题:{…}
},
功能(数据、响应){
...
var oHeaders={
... };
奥达塔请求({
requestUri:“http://:/sap/opu/odata/sap/ZMM_EMP_SRV/EmployeeSet”,
方法:“张贴”,
标题:oHeaders,
数据:光电参数
},
功能(数据、请求){
MessageToast.show(“Transferência realizada!”);
位置。重新加载(true);
},函数(err){
MessageToast.show(“一次转移!”;
});
},函数(err){
var request=err.request;
var响应=错误响应;
警报(“Get中的错误-请求”+请求+“响应”+响应);
});  
}否则{
...

这是一个非常古老的示例,使用的是旧技术。 您应该将此行添加到代码中:

jQuery.sap.require("sap.ui.model.odata.datajs");
这应该可以解决您的oData未定义的问题。
通常,您应该阅读使用odata模型的read()函数的较新示例。

您试图使用datajs库中的odata全局对象。该库确实随OpenUI5提供,但在我看来,您不应该直接使用它(但请使用的方法;无法真正保证UI5将来会继续提供此第三方库)

您很可能会收到错误,因为UI5尚未加载库。通常,UI5会延迟加载库,因此您必须请求UI5为您加载它(在您链接的教程中,它是由OData模型在后台加载的)。要执行此操作,您可以使用(jQuery.sap.require(“sap.ui.thirdparty.datajs”))或在控制器开头列出调用中的依赖项(例如
sap.ui.define(['sap/ui/thirdparty/datajs'],function(datajs){…}


稍后编辑:您还可以使用
jQuery.sap.require(“sap.ui.model.odata.datajs”)
调用,但该模块已从那里移动,它将有效地将您重定向到新位置。

X未定义通常意味着给定变量X仍未定义。您必须正确初始化OData变量。遗憾的是,在阅读了您的示例后,我不知道作者在想什么。也许OData是某个全局变量ar在他的例子中?我下载了datajs-1.0.1.min.js,放在我的目录中并包含在我的index.html中,所以它可以工作。它正确吗?你不需要单独下载datajs。正如我在回答中提到的,“这个库随OpenUI5一起提供“。这意味着默认情况下UI5中包含库,但它仅在需要或您请求时加载。要请求它,您可以使用回答中解释的require/define调用。我不加载datajs-1.0.1.min.js,放在我的目录中并包含在我的index.html中,因此它可以工作。是否正确?