DWR中怎么取的函数的返回值

lanzhengwu 2008-01-07 03:12:22
我用DWR写了个判断是否登陆的函数:
function isLogin(){
AddHint.getSessionUser(backlogin);
}
function backlogin(info){
if(info==false){
alert('您未登录或者登陆时间过长,请先登录再操作.');
return false;
}
return true;
}

现在的问题是怎么获得 isLogin返回的boolean值呢?
如,我现在要写一个函数:
var islogin=isLogin();
为什么这样获得不了值呢??
...全文
335 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanzhengwu 2008-01-08
  • 打赏
  • 举报
回复
代码不用发了,肯定是对的,没登陆时,就返回的false,上面alert也执行过了..
imA 2008-01-08
  • 打赏
  • 举报
回复
把你的AddHint.getSessionUser方法代码发上来看看,


另外alert('您未登录或者登陆时间过长,请先登录再操作.');这里执行了吗,或者与它对已的else语句块执行了吗?
zdblzwj 2008-01-08
  • 打赏
  • 举报
回复
mark
lanzhengwu 2008-01-08
  • 打赏
  • 举报
回复
这上面的我也知道..看我的代码:
	function isLogin(){
AddHint.getSessionUser(function(info){
if(info==false){
alert('您未登录或者登陆时间过长,请先登录再操作.');
return false;
}else{
return true;
}
}
);
}

调用:
function test(){
var islog=isLogin();
alert(islog);
}

为什么返回会是undefined
lanzhengwu 2008-01-08
  • 打赏
  • 举报
回复
恩,有时问题换个思路就OK了.谢谢imA le ..
imA 2008-01-08
  • 打赏
  • 举报
回复
你可以试试这样写:

function isLogin(){
var result;
AddHint.getSessionUser(function(info){
if(info==false){
alert('您未登录或者登陆时间过长,请先登录再操作.');
//returnfalse;
}
result=info;
}
);
return result;
}

看看这样能不能在test中获取值
lanzhengwu 2008-01-08
  • 打赏
  • 举报
回复
to:piaopiao11 难道就不能获得返回值吗??
to:imA
java 代码也就这样
public boolean getSessionUser(HttpServletRequest request) throws InteriorException{
CpOperate oper = new CpOperate(Constants.C_SESSION_USER);
TblUser user = oper.getLogintblUser(request);
boolean f=false;
if(user!=null)f= true;else f= false;
return f;
}

返回一个boolean值,我现在要在JS中获得这个值,像这样:function test(){
var islog=isLogin();
alert(islog);
}
在 test中怎么获得isLogin();的返回值
piaopiao11 2008-01-08
  • 打赏
  • 举报
回复
你的function是给AddHint.getSessionUser()调用的,返回的true或者false也是在AddHint.getSessionUser()调用时获得
这样的返回不可能再外面获取到的。
imA 2008-01-08
  • 打赏
  • 举报
回复
既然能alert出来false,如果代码没问题那么true也应该alert出来。

你上面说的返回undefined,说明你在js中的某个变量没有定义就引用了,检查一下你的java代码,看看是否和js中的一致。
imA 2008-01-07
  • 打赏
  • 举报
回复
CardrechargeAction.pay(custId,cardId,cardPwd,function(messages){
if(messages.appcode=="0.0"){
document.getElementById("balance").innerText=messages.balance;
document.getElementById("print_balance").innerText=messages.balance;
document.getElementById("cardstatus").innerText=messages.cardstatus;
document.getElementById("lasttime").innerText=messages.lasttime;
document.all.print.disabled=false;
}
document.getElementById("updatetip").innerText=messages.msgtip;
});


其中的messages就是CardrechargeAction的pay方法的返回值,CardrechargeAction的pay方法如下:
	public Map pay(String custId, String cardId, String cardPwd,HttpSession session) {
System.out.println("custId :"+custId);//取得js传递过来的参数
Map messages = new HashMap();
messages.put("balance","hello");
messages.put("cardstatus","haha");
messages.put("lasttime","2007-01-07");
return messages;

}


上面就是一个简单的小例子,在js中的messages就代表pay方法返回的Map messages对象。
/*********************** ** 创建人:奚强 ** 日 期:2002-7-18 ** 修改人: ** 日 期: ** 描 述:公用函数 ** 版 本:V1.0 ******************************************************************/ //全局变量 g_sourceSubstr = "`~" //要替换的字串 g_objecSubstr = "\"" //替换为的字串 /***************************************** 功能:检查是否含有"'",'\\',"/"等等 参数:ParseString 要检查的字符串 返回值 true :含有非法字符 false:没有指定的非法字符 ******************************************/ function chksafe( ParseString ) { fibdn = new Array ("\'" ,"\\", "、", ",", ";", "/","\&","$","~","!","`"); i=fibdn.length; j=ParseString.length; for (ii=0;ii返回值 true : 含有空格字符 false: 没有空格 ******************************************/ function chkspc(ParseString) { var i=ParseString.length; var j = 0; var k = 0; while (k0) { return true; } return false; } /***************************************** 功能:检查是否为Email Address 参数:inputString 要检查的字符串 返回值: true :合法的mail地址 false:非法Email地址 ******************************************/ function chkemail(inputString) { var pattern = /^([\.a-zA-Z0-9_-]){3,}@([a-zA-Z0-9_-]){1,}(\.([a-zA-Z0-9]){1,}){1,}$/; if(!pattern.test(inputString)){ return false; } return true; } /***************************************** 功能:检查是否为日期 (格式2004-10-10) 参数:datestr 返回值: true :是合法日期 false:非法日期 ******************************************/ function chkdate( datestr ) { var lthdatestr if (datestr != "") lthdatestr= datestr.length ; else lthdatestr=0; var tmpy=""; var tmpm=""; var tmpd=""; var status; status=0; if (lthdatestr== 0) return false; for (i=0;i2) { return 0; } if ((status==0) && (datestr.charAt(i)!='-')) { tmpy=tmpy+datestr.charAt(i) } if ((status==1) && (datestr.charAt(i)!='-')) { tmpm=tmpm+datestr.charAt(i) } if ((status==2) && (datestr.charAt(i)!='-')) { tmpd=tmpd+datestr.charAt(i) } } year=new String (tmpy); month=new String (tmpm); day=new String (tmpd) if ((tmpy.length!=4) || (tmpm.length>2) || (tmpd.length>2)) { return false; } if (!((1<=month) && (12>=month) && (31>=day) && (1<=day)) ) { return false; } if (!((year % 4)==0) && (month==2) && (day==29)) { return false; } if ((month<=7) && ((month % 2)==0) && (day>=31)) { return false; } if ((month>=8) && ((month % 2)==1) && (day>=31)) { return false; } if ((month==2) && (day==30)) { return false; } return true; } /***************************************** 功能:检查是否含有非数字或字母(一般密码有此要求) 参数:str 要检查的字符串 返回值: true :全部为数字或字母 false:有不是数字和字母的字符 ******************************************/ function chkPWD(str) { var strSource ="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; var ch; var i; var temp; for (i=0;i<=(str.length-1);i++) { ch = str.charAt(i); temp = strSource.indexOf(ch); if (temp==-1) { return false; } } return true; } /***************************************** 功能:去掉前导空格和尾部空格 参数:str 要检查的字符串 返回值:处理好的字符串 ******************************************/ function jtrim(str) { while (str.charAt(0)==" ") { str=str.substr(1); } while (str.charAt(str.length-1)==" ") { str=str.substr(0,str.length-1); } return(str); } /***************************************** 功能:检查英文字符的长度 参数:str 要检查的字符串 返回值:字符串的长度 ******************************************/ function checkLength(str) { num=str.length var arr=str.match(/[^\\\\\\\\\\\\\\\\x00-\\\\\\\\\\\\\\\\x80]/ig) if(arr!=null)num+=arr.length return num } /***************************************** 功能:检查是否为整数数字 参数:str 要检查的字符串 返回值:true为是数字,false为不是数字 ******************************************/ function checkNum(str) { return !/\D/.test(str); } /***************************************** 功能:判断是否含有汉字 参数:str 要检查的字符串 返回值:true为含有汉字,false为不含有汉字 ******************************************/ function checkChinese(str) { return ( escape(str).indexOf("%u")!=-1 ); } //函数名:fucCheckPostcode //功能介绍:检查是否为邮编 //参数说明:要检查的数字 //返回值:1为是邮编,0为不是邮编 function checkPostcode(postCode) { var i,j,noZero; noZero="123456789"; if (fucCheckNUM(postCode)==0) return 0; if (-1==noZero.indexOf(postCode.charAt(0))) return 0; if (postCode.length!=6) return 0; //说明是数字 return 1; } //函数名:fucCheckTEL //功能介绍:检查是否为电话号码 //参数说明:要检查的字符串 //返回值:1为是合法,0为不合法 function checkTEL(TEL) { var i,j,strTemp; strTemp="0123456789-()# "; for (i=0;i函数名:fucCheckLength //功能介绍:检查字符串的长度 //参数说明:要检查的字符串 //返回值:长度值 function fucCheckLength(strTemp) { var i,sum; sum=0; for(i=0;i=0) && (strTemp.charCodeAt(i)<=255)) sum=sum+1; else sum=sum+2; } return sum; } /***************************************************************** ** 函数 名: isBlank ** 输  入: value 需要操作的字符串 **    ** 输 出:true是空,false是不为空 ** 功能描述:检查值是否为空 ** 修改 人: ** 日  期: *****************************************************************/ function Is_Null(value) { Text=""+value; if(Text.length) { for(var i=0;i=Text.length) Ret=true; Ret=false; } else Ret=true; return(Ret); } // ----------------------------------------------------------------------------------- // 本函数用于对sString字符串进行空格截除 // ----------------------------------------------------------------------------------- function JsTrim(sString) { var sTemp=""; sTemp=JsRTrim(JsLTrim(sString)); return sTemp; } // ----------------------------------------------------------------------------------- // 本函数用于对sString字符串进行后空格截除 // ----------------------------------------------------------------------------------- function JsRTrim(sString) { var sStr,i,sResult = "",sTemp = "" ; if (sString.length == 0) { return "" ;} // 参数sString是空串 sStr = sString.split(""); for (i = sStr.length - 1 ; i >= 0 ; i --) // 将字符串进行倒序 { sResult = sResult + sStr[i]; } sTemp = JsLTrim(sResult) ; // 进行字符串前空格截除 if (sTemp == "") { return "" ; } sStr = sTemp.split(""); sResult = "" ; for (i = sStr.length - 1 ; i >= 0 ; i--) // 将经处理后的字符串再进行倒序 { sResult = sResult + sStr[i]; } return sResult ; } // ----------------------------------------------------------------------------------- //本函数用于对sString字符串进行前空格截除 // ----------------------------------------------------------------------------------- function JsLTrim(sString) { var sStr,i,iStart,sResult = ""; sStr = sString.split(""); iStart = -1 ; for (i = 0 ; i < sStr.length ; i++) { if (sStr[i] != " ") { iStart = i; break; } } if (iStart == -1) { return "" ;} //表示sString的所有字符均是空格,则返回空串 else { return sString.substring(iStart) ;} } //函数名:checkStringCompose //功能介绍:检查InputString是否由ComposeString组成 //参数说明:要检查的字符串 //返回值:1为是由ComposeString组成,0为不是由ComposeString组成 function checkStringCompose(InputString,ComposeString) { var i,j; if ( InputString.length==0) return 0 for (i=0;i中的字符组成 } } //说明是由ComposeString的字符组成 return 1; } //函数名:checkDigitBit //功能介绍:检查InputString由几位小数 //参数说明:要检查的字符串 //返回值:小数位数 function checkDigitBit(InputString) { var i,j; j=0; //如果字符串不是由数字和小数点组成的则返回-1 if(checkStringCompose(InputString,'0123456789.')==0){ return -1; } else{ for (i=0;i1个则返回-1 if (j>1){ return -1; } } //如果字符串是整数则返回0 if(checkStringCompose(InputString,'0123456789')==1){ return 0; } else{ i=InputString.lastIndexOf("."); i=InputString.length-i-1; return i; } } } //一个判断日期大小,sDate代表起始时间,eDate代表结束时间,如果eDate大于sDate,返回true //author:xiqiang function opinionDate(sDate,eDate){ startDate=sDate; endDate=eDate; startMark1=startDate.indexOf("-"); startYear=startDate.substring(0,startMark1); startDate=startDate.substring(startMark1+1,startDate.length); startMark2=startDate.indexOf("-"); startMonth=startDate.substring(0,startMark2); startDate=startDate.substring(startMark2+1,startDate.length); startDay=startDate; endMark1=endDate.indexOf("-"); endYear=endDate.substring(0,endMark1); endDate=endDate.substring(endMark1+1,endDate.length); endMark2=endDate.indexOf("-"); endMonth=endDate.substring(0,endMark2); endDate=endDate.substring(endMark2+1,endDate.length); endDay=endDate; if(startMonth.substring(0,1)==0){ startMonth = startMonth.substring(1,2); } if(endMonth.substring(0,1)==0){ endMonth = endMonth.substring(1,2); } if(startDay.substring(0,1)==0){ startDay = startDay.substring(1,2); } if(endDay.substring(0,1)==0){ endDay = endDay.substring(1,2); } if(parseInt(endYear)parseInt(endMonth)){ return false; }else if(parseInt(startMonth)==parseInt(endMonth)){ if(parseInt(startDay)>parseInt(endDay)){ return false; } } } return true; } //函数名:checkFileExt //功能介绍:检查文件扩展名 //参数说明:要检查的字符串 //返回值:文件扩展名,扩展名有误时返回error function checkFileExt(InputString) { var i; var tmpString; //如果为空字符串则返回error if(InputString==null) return 0; else{ //如果为字符串长度<4则返回error if (InputString.length<=4) return 0; else{ i=InputString.lastIndexOf("."); tmpString=InputString.substring(i+1,InputString.length); i=tmpString.length; if(i==3||i==4){ return tmpString; } else{ return 0; } } } } //判断一个字符串是否是英文+数字组成 function isEnglish(inputString){ var regexp=/^[a-zA-Z0-9_-]+$/; if(!regexp.test(inputString)){ return 0; } return 1; } //检查翻页的数字筐是否都是数字 function isInteger( objForm ) { var NUM = objForm.page.value; alert( "NUM="+NUM); var i,j,strTemp; strTemp="0123456789"; if ( NUM.length== 0) alert("不能为空,请输入数字!"); objForm.page.value = ""; objForm.page.focus(); return false; for (i=0;i
DWR是Direct Web Remoting 的缩写。 DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单. DWR 是一个开放源码的使用 Apache 许可协议的解决方案,它包含服务器端 Java 库、一个 DWR servlet 以及 JavaScript 库。虽然 DWR 不是 Java 平台上唯一可用的 Ajax-RPC 工具包,但是它是最成熟的,而且提供了许多有用的功能。 从最简单的角度来说,DWR 是一个引擎,可以把服务器端 Java 对象的方法公开给 JavaScript 代码。使用 DWR 可以有效地从应用程序代码把 Ajax 的全部请求-响应循环消除掉。这意味着客户端代码再也不需要直接处理 XMLHttpRequest 对象或者服务器的响应。不再需要编写对象的序列化代码或者使用第三方工具才能把对象变成 XML。甚至不再需要编写 servlet 代码把 Ajax 请求调整成对 Java 域对象的调用。 DWR 是作为 Web 应用程序的 servlet 部署的。把它看作一个黑盒子,这个 servlet 有两个主要作用:首先,对于公开的每个类,DWR 动态地生成包含在 Web 页面的 JavaScript。生成的 JavaScript 包含存根函数,代表 Java 类上的对应方法并在幕后执行 XMLHttpRequest。这些请求被发送给 DWR,这时它的第二个作用就是把请求翻译成服务器端 Java 对象上的方法调用并把方法的返回值放在 servlet 响应发送回客户端,编码成 JavaScript。DWR 还提供了帮助执行常见的用户界面任务的 JavaScript 工具函数

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧