Ibm mobilefirst 未捕获类型错误:无法使用';在';操作员搜索';支持COOKIES';无效
我正在使用IBM Worklight Developer Edition 5.0.5尝试创建简单(HTML和适配器)应用程序,但面临未解决的问题 这可能是一个老论坛中没有回答的问题: [环境] 操作系统:Windows7 64位(日语区域设置), 月食:4.2.1, Worklight:Developer Edition 5.0.5 [说明] 我在Eclipse中创建了Worklight项目,没有任何外部库,如jQuery mobile或Dojo。我在这个项目中添加了HTTP适配器和SQL适配器。当我尝试“以……身份运行”时,这两种方法似乎都很有效调用“Worklight过程”。两者都返回了预期的JSON。所以我认为适配器不会有问题 但是当我从HTML文件调用这些适配器时,我得到了“uncaughttypeerror:无法使用'in'操作符在null中搜索'SUPPORT\u COOKIES'”worklight.js中的错误(第2380行) [我的代码] var invocationData={adapter:'SQLAdapter',过程: 'getCount',参数:[]} WL.Logger.debug(“1:invocationData=“+invocationData”)Ibm mobilefirst 未捕获类型错误:无法使用';在';操作员搜索';支持COOKIES';无效,ibm-mobilefirst,Ibm Mobilefirst,我正在使用IBM Worklight Developer Edition 5.0.5尝试创建简单(HTML和适配器)应用程序,但面临未解决的问题 这可能是一个老论坛中没有回答的问题: [环境] 操作系统:Windows7 64位(日语区域设置), 月食:4.2.1, Worklight:Developer Edition 5.0.5 [说明] 我在Eclipse中创建了Worklight项目,没有任何外部库,如jQuery mobile或Dojo。我在这个项目中添加了HTTP适配器和SQL适配
WL.Client.invokeProcedure(invokeData,{onSuccess: LoadFeedsAccess,On失败:loadFeedsFailure}) 调试(“2:loadFeeds”) 函数loadFeedsAccess(结果){WL.Logger.debug(“3:成功: result=“+result);} 函数loadFeedsFailure(结果){WL.Logger.debug(“4:失败: result=“+result);} [我的调试控制台输出] 1:invocationData=[object]worklight.js:1112 未捕获类型错误:无法使用“in”运算符搜索 null worklight.js:2380中的“支持COOKIES” wlclient init已启动worklight.js:1112 之前:app init onSuccess worklight.js:1112 之后:app init onSuccess worklight.js:1112 wlclient初始化成功 因此,似乎只成功调用了第一个WL.Logger.debug(),但WL.Client.invokeProcedure()似乎导致了上述未捕获的TypeError,并且它只是失败了(不是调用成功案例回调,也不是失败案例回调) 这是一个SQL适配器案例,但当我尝试使用HTTP适配器时,结果是相同的(在WL.Client.invokeProcedure()中失败)。同样,当我尝试“以运行方式运行…”时,两者都会返回适当的结果调用“Worklight过程” 我的控制台显示此故障发生在worklight.js的第2380行: 2379:isEnabled:函数(字段){ 2380:返回!!(配置文件中的字段和配置文件[field]) 2381:} 所以我不知道我的代码会出什么问题。关于这个问题有什么想法/信息吗?谢谢你提前通知 已添加
Mac OSX环境中也发生了相同的错误。调用Worklight API,如 WL.Client.InvokeProcess和WL.Logger.debug应仅在调用wlCommonInit后进行
wlCommonInit驻留在应用程序的主JavaScript文件(您的project\your application\js\application name.js)中。调用Worklight API,如 WL.Client.InvokeProcess和WL.Logger.debug应仅在调用wlCommonInit后进行
wlCommonInit驻留在应用程序的主JavaScript文件(您的项目\your application\js\application name.js)中。我找到了导致问题的原因 在访问适配器时,我直接在HTML文件中编辑javascript,使用自动生成标记底部的标记,并尝试创建初始页面。我认为这不适合Worklight。我不确定到底出了什么问题,但我的javascript代码可以在一切准备就绪之前加载
现在我更改了代码我将我的javascript(以前在HTML中)移动到(Projectname.js)中wlCommonInit()函数的最底部。目前,它似乎工作正常,没有像以前那样的错误消息,并通过适配器检索期望的信息。这可能是一个合适的方法。我已经找到了导致我的问题的原因 在访问适配器时,我直接在HTML文件中编辑javascript,使用自动生成标记底部的标记,并尝试创建初始页面。我认为这不适合Worklight。我不确定到底出了什么问题,但我的javascript代码可以在一切准备就绪之前加载
现在我更改了代码我将我的javascript(以前在HTML中)移动到(Projectname.js)中wlCommonInit()函数的最底部。目前,它似乎工作正常,没有像以前那样的错误消息,并通过适配器检索期望的信息。这可能是一种合适的方法。要解决此类问题,我们需要检查何时调用第一个适配器调用。我们需要将适配器调用延迟几秒钟,比如1000毫秒。然后您的应用程序将按您喜欢的方式运行
setTimeout(function(){
$(document).ready(function() {
var invocationData = {
adapter : 'Contract',
procedure : 'GetDropDownListForLogin'
};
console.log("Invocation data:" +invocationData);
var options = {
onSuccess : OnLogindataSucess,
onFailure : OnLoginFail,
};
WL.Client.invokeProcedure(invocationData,options);
});
},1000);
请使用以下方法,第一个适配器调用它将解决您的问题 要解决此类问题,我们需要检查何时调用第一个适配器调用。我们需要将适配器调用延迟几秒钟,比如1000毫秒。然后您的应用程序将按您喜欢的方式运行
setTimeout(function(){
$(document).ready(function() {
var invocationData = {
adapter : 'Contract',
procedure : 'GetDropDownListForLogin'
};
console.log("Invocation data:" +invocationData);
var options = {
onSuccess : OnLogindataSucess,
onFailure : OnLoginFail,
};
WL.Client.invokeProcedure(invocationData,options);
});
},1000);
请使用以下方法,第一个适配器调用它将解决您的问题 谢谢Ishai。但我仔细检查了这一行,它已经(自动)插入到我的HTML中。正如您在[My debug console output]的第一行中看到的,WL.Logger.debug()本身似乎可以工作。我找到了一个解决方案!你的建议是一个很大的暗示,Ishai。我很感激。我将很快发布我的答案。谢谢Ishai。但我仔细检查了这一行,它已经(自动)插入到我的HTML中。正如您在[My debug console output]的第一行中看到的,WL.Logger.debug()本身似乎可以工作。我找到了一个解决方案!你的建议是一个很大的暗示,Ishai。我很感激