我有一个登录表单,它带有用户ID和密码。当用户点击提交按钮时 调用以下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]
});
}
运行上述代码时出现以下错误
[错误] FWLSE0099E:调用过程时发生错误 [project 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 : 'some@email.address' };
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");
}
是否与单引号有关?
答案 0 :(得分:1)
我的第一个猜测是,它正在发生,因为你正在使用括号:
var para=[$('#usernameInputField').val()];
当你不应该:
var para=$('#usernameInputField').val();
你也可以这样做:
var id = {username : $('#usernameInputField').val() };