0

我正在使用 IBM MobileFirst 创建一个应用程序。我已经创建了一个 HTTP 适配器,现在我正在我的 main.js 文件中调用响应。这是 invokeProcedure 调用(invocationData var 调用适配器和该适配器内的过程):

    WL.Client.invokeProcedure(invocationData,{
       onSuccess : loadSuccess(),
       onFailure : loadFailure(),
    });

现在,我已经定义了一个 loadSuccess() 和一个 loadFailure() 函数(在调用之前声明)(简单用于测试目的):

    var loadSuccess = function(result){
       alert("success");
       alert(result.invocationResult);
    }

    var loadFailure = function(result){
       alert("failure");
       alert(result.invocationResult);
    }

然而,虽然“成功”和“失败”会闪烁,但“结果”会返回为空。我见过的每个教程都成功地使用了这些方法,所以我很困惑为什么我的类似实现不起作用。此外,invokeProcedure 函数似乎正在调用并显示成功和失败选项的结果!

当我刚刚测试时,我的适配器会返回一个适当的响应,那么为什么数据的调用不能正常工作呢?IBM 文档不是很清楚,所以我很感激任何和所有的建议!

编辑:

我将 main.js 更新为以下代码:

    function loadSuccess(result){
      alert("success");
    }

    function loadFailure(result) {
      alert("failure");
    }

 function testFunc(userid, password) {
     var invocationData = {
        adapter : 'myAdapter',
        procedure : 'myProc',
        parameters : [ userid, password ],
    };

    WL.Client.invokeProcedure(invocationData,{
       onSuccess : loadSuccess,
       onFailure : loadFailure
   });
}

当我测试我的适配器时,只需调用它,响应就成功了,并且包含了我想要的所有响应信息。那么为什么这里不调用 onSuccess 呢?

4

3 回答 3

1

您可能需要从 onSuccess 和 onFailure 声明中删除参数括号,否则它会在分配时而不是在需要时运行函数:

WL.Client.invokeProcedure(invocationData,{
   onSuccess : loadSuccess,
   onFailure : loadFailure
});
于 2015-06-01T15:11:07.613 回答
0

由于您使用“var”来定义您的 onSuccess/onFailure 回调,因此请确保它们在同一范围内。尝试提供内联回调,例如

WL.Client.invokeProcedure(invocationOptions, {
   onSuccess: function(data){ alert....},
   onFailure: function(data){ alert....}
})
于 2015-06-01T18:51:29.490 回答
0

您必须在 html 文件中声明 initOptions.js 、 main.js 和 messages.js ,这些文件将使用指向您的适配器的控制器..

否则 invokeProcedure 将是未定义的

只需转到您的 html 文件,但此代码位于正文标记的末尾,直接在结束标记之前

<script src="js/initOptions.js"></script>
<script src="js/main.js"></script>
<script src="js/messages.js"></script>
于 2015-08-11T14:26:39.853 回答