我使用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
});
}
当我测试我的适配器时,通过简单地调用它,响应成功并包含我想要的所有响应信息。那么为什么不在这里调用成功?
答案 0 :(得分:1)
可能你需要从onSuccess和onFailure声明中删除参数括号,否则它会在分配时而不是在需要时运行函数:
WL.Client.invokeProcedure(invocationData,{
onSuccess : loadSuccess,
onFailure : loadFailure
});
答案 1 :(得分:0)
由于您使用“var”来定义onSuccess / onFailure回调,因此请确保它们位于相同的范围内。尝试提供内联回调,例如
WL.Client.invokeProcedure(invocationOptions, {
onSuccess: function(data){ alert....},
onFailure: function(data){ alert....}
})
答案 2 :(得分:0)
您必须在html文件中声明initOptions.js,main.js和messages.js,它们将使用指向您的适配器的控制器。
否则invokeProcedure将是unifined
直接转到你的html文件,然后在关闭标记
之前直接将此代码放在body标记的末尾<script src="js/initOptions.js"></script>
<script src="js/main.js"></script>
<script src="js/messages.js"></script>