问题描述
小弟,菜鸟级,求各位大侠赐教:在JS中定义了一个全局变量nowTime;varnowTime;//服务器的当前时间然后通过Ajax从后台获取当前的服务器的时间varnowTimeUrl="${ctx}/ajaxAction.do?method=json&classes=resatServiceImpl&common=getNowTime";//定义后台路径$.getJSON(nowTimeUrl,queryNowTime);//执行回调函数//回调函数functionqueryNowTime(data){vartime=data.jsondata.nowTime;this.nowTime=newDate();this.nowTime.setHours(time.split(":")[0]);this.nowTime.setMinutes(time.split(":")[1]);}然后在另外一个方法里面调用这个nowTime,但是并没有值,不知道为什么。。。很是郁闷。。。//用户点击签到时执行的方法functionsignIn(){alert(this.nowTime);//在这里调用,但是没有获取到值//if(nowTime.getTime()>workTime.getTime()){//alert("您已经迟到,请填写迟到原因!");//}else{//alert("签到成功!");//}$("#signIn").css("display","none");$("#signOut").css("display","block");}PS:回调函数已经正确赋值,后台的getNowTime();也是没有问题的,而且在执行signIn()方法之前已经执行了queryNowTime()方法。
解决方案
解决方案二:
ajax默认是异步执行的,在你下面的js执行的时候,异步的数据可能还没有返回
解决方案三:
引用1楼java_pengjin的回复:
ajax默认是异步执行的,在你下面的js执行的时候,异步的数据可能还没有返回
你得在在回调的地方,确定是否已经拿到后台返回值了,再做其他事情。。。中间可以做一些延迟时间的操作,或者类似dwr那样,将处理写在返回值拿到的后面。。。