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

);

函数 loadDetailsS​​uccess()

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>”