IBM Worklight - 无法从客户端调用插入查询的 SQL 适配器过程。我的编码有啥问题?
Posted
技术标签:
【中文标题】IBM Worklight - 无法从客户端调用插入查询的 SQL 适配器过程。我的编码有啥问题?【英文标题】:IBM Worklight - Could not invoke the SQL adapter procedure for the insert query from the client side . What's wrong with my coding?IBM Worklight - 无法从客户端调用插入查询的 SQL 适配器过程。我的编码有什么问题? 【发布时间】:2014-03-11 06:18:00 【问题描述】:在网页中运行代码时出现空白屏幕。适配器过程单独被正确调用,但我无法从客户端调用它。我正在使用 Db2 数据库。请帮忙。
这是我的 javascript 代码..
函数 loadDetails(x,y,z,a,b,c,d,e,f,g,h,i)
var x= document.getElementById("firstname").value;
var y= document.getElementById("lastname").value;
var z= document.getElementById("doorno").value;
var a= document.getElementById("streetname").value;
var b= document.getElementById("area").value;
var c= document.getElementById("zipcode").value;
var d= document.getElementById("landmark").value;
var e= document.getElementById("secques").value;
var f= document.getElementById("secans").value;
var g= document.getElementById("emailaddress").value;
var h= document.getElementById("username").value;
var i= document.getElementById("password").value;
var invocationData =
adapter : 'DBAdapter',
procedure : 'addDBAdapter',
parameters : [x,y,z,a,b,c,d,e,f,g,h,i]
;
WL.Client.invokeProcedure(invocationData,
onSuccess : loadDetailsSuccess,
onFailure : loadDetailsFailure
);
函数 loadDetailsSuccess()
alert("Registration Successfull. Please login to continue...");
window.location.href = 'login.html';
函数 loadDetailsFailure()
WL.Logger.error("load data failure");
DBAdapter-impl.js
var addStatement = WL.Server.createSQLStatement("插入 CUSTOMER(FIRSTNAME,LASTNAME,DOORNO,AREA,STREETNAME,ZIPCODE,LANDMARK,SECQUES,SECANS,EMAILADDRESS,USERNAME,PASSWORD) 值 (?,?,?,? ,?,?,?,?,?,?,?,?)");
function addDBAdapter(x,y,z,a,b,c,d,e,f,g,h,i)
return WL.Server.invokeSQLStatement(
preparedStatement : addStatement,
parameters : [x,y,z,a,b,c,d,e,f,g,h,i]
);
【问题讨论】:
请将您的项目副本更新到 Dropbox 或其他类似机制以进行进一步调查。我们确实还需要查看 HTML 代码,以了解您是如何调用这些程序的。如果您正在寻找有关适配器的信息以及示例项目,请查看此处(在第 4 节 Worklight 服务器端开发下):public.dhe.ibm.com/software/mobile-solutions/worklight/docs/… 您是否尝试直接从 eclipse 调用该过程? 另外,还不清楚为什么客户端函数 loadDetails 接受参数但同时覆盖内部的这些参数...... 您可以将您的 Worklight 项目共享到 Dropbox 中吗? 请注意,Worklight 混合应用是单页,您不能使用window.location.href 来切换页面。请查看入门模块“构建多页应用程序”ibm.com/developerworks/mobile/worklight/getting-started.html 【参考方案1】:正如 eabe 在 cmets 中正确提到的那样,我们都错过了它(!),Worklight 是一个单页应用程序,实际上window.location.href = 'login.html';
似乎是这里的罪魁祸首。
请参阅此主题的相关问题,其中也包含解决方案:
How to change between pages using Jquery Mobile in Worklight基本上,您可以使用 jQuery 的 .load
或 jQuery Mobile 的 .changePage
(或等效的其他库来执行相同操作)来加载另一个页面的内容,或“切换”到另一个页面。做你所做的,你失去了 Worklight“上下文”,没有任何东西可以工作或显示。
另请查看此培训材料:
Building a multipage application【讨论】:
以上是关于IBM Worklight - 无法从客户端调用插入查询的 SQL 适配器过程。我的编码有啥问题?的主要内容,如果未能解决你的问题,请参考以下文章
IBM worklight v5.0.6 - 应用中心客户端无法连接到服务器
IBM Worklight - 无法显示使用 SQL 适配器检索到的数据
IBM Worklight - 如何实现 GPS 功能? [关闭]
IBM Worklight 5.0.x:未捕获的 TypeError:无法调用未定义的方法“init”
IBM Worklight - 从客户端发送 HTTP POST 请求
IBM Worklight 6.1 - “Ecma 错误:TypeError:无法调用对象中的属性 <function>”