我有一个登录表单,其中包含用户名和密码。当用户点击提交按钮时,
下面的js函数被调用。
function getGeoCode(){
var para=[$('#usernameInputField').val()];
alert("from sql adapter"+para);
var id = {username : para };
var invocationData = {
adapter: "GDMSDbAdaptor",
procedure: "getGeoCode",
parameters: [id]
};
alert("before adapter proc call");
WL.Client.invokeProcedure(invocationData, {
onSuccess: getMessage,
onFailure: getMessageOnfailure
});
alert("after adapter proc call");
}
下面的适配器代码执行以上功能后
var procedureStatement = WL.Server.createSQLStatement("SELECT DISP_NUMBER,DISP_STATUS,DISP_CREATE_DATE,CUST_CONT_NAME,DISP_RES_OWNER,DISP_MANAGER FROM GDMW.DISPUTE WHERE DISP_RES_OWNER IN (SELECT USER_CNUM FROM GDMW.USER_ACC_PROFILE WHERE USER_EMAIL=?)");
function getGeoCode(data) {
var email=data.username;
WL.Logger.info("In getGeoCode method"+email);
return WL.Server.invokeSQLStatement({
preparedStatement : procedureStatement,
parameters : [email]
});
}
运行以上代码时出现以下错误
[ERROR] FWLSE0099E:调用过程时发生错误
[项目GDMSLoginApp] GDMSDbAdaptor / getGeoCodeFWLSE0100E:参数:
[project GDMSLoginApp] TypeError:找不到默认值
宾语。
(C%3A%5Cnewworkspaceworklight%5CGDMSLoginApp%5Cadapters%5CGDMSDbAdaptor / GDMSDbAdaptor-impl.js#22)
FWLSE0101E:引起原因:[项目
GDMSLoginApp] nullorg.mozilla.javascript.EcmaError:TypeError:无法
查找对象的默认值。
(C%3A%5Cnewworkspaceworklight%5CGDMSLoginApp%5Cadapters%5CGDMSDbAdaptor / GDMSDbAdaptor-impl.js#22)
但是如果我将如下所示的参数硬编码(电子邮件ID),则效果很好:
function getGeoCode(){
var para=[$('#usernameInputField').val()];
alert("from sql adapter"+para);
var id = {username : '[email protected]' };
var invocationData = {
adapter: "GDMSDbAdaptor",
procedure: "getGeoCode",
parameters: [id]
};
alert("before adapter proc call");
WL.Client.invokeProcedure(invocationData, {
onSuccess: getMessage,
onFailure: getMessageOnfailure
});
alert("after adapter proc call");
}
与单引号有关吗?
最佳答案
我的第一个猜测是它正在发生,因为您正在使用方括号:
var para=[$('#usernameInputField').val()];
什么时候不应该:
var para=$('#usernameInputField').val();
您可能也可以这样做:
var id = {username : $('#usernameInputField').val() };
关于javascript - 向适配器传递参数时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25348005/