您的位置:首页 > 产品设计 > UI/UE

如何获取Request.JSON返回的responseText

2016-11-29 09:06 357 查看
最新由于项目需要,设计了一个简单的验证码功能,功能需求:在某一页面,点击某个按钮后,提示用户输入之前发到用户邮箱的验证码,如果验证成功提示验证码成功,继续执行下面代码,验证失败,提示验证码错误,让用户重新输入,大致需求如此,因项目使用的Js库是Moontools,之前并未接触或使用过该Js库,所以现场百度了解决方案,但并未看到有建设性的解决方案。下面的代码是我写的基本的提示输入框:

var value = prompt('验证码:','请在此输入验证码');

if(value == null){

return;

}else if(value == ''){

alert('验证码不准为空');

return;

}else{

var applyId = ${sealApply.sealApplyId};

var retu = Check.tocheck(applyId,value);

if(retu){

alert("验证码错误");

return;

}

}

原理很简单,我再Check.js中,新建了一个tocheck的验证方法,传了两个参数到后台,具体的异步请求代码如下:

//Check.js

this.tocheck = function(applyId,checkNum){

var url='sealApply!tocheck.jspa';

var retu=false;

var jsonRequest = new Request.JSON({

url:url,

onSuccess:function(responseJSON, responseText){

if(responseJSON.success){

retu=true; }

},

onFailure:function(xhr){

alert(xhr);

}

}).post({"applyId":applyId,"checkNum":checkNum});

return retu;

}

因为我的想法是如果验证成功,response就返回success字段,如果验证码错误就返回failure字段,所以我再onSuccess里判断了返回的结果,因为retu默认验证失败,

所以只有验证成功才会修改验证的状态,但是由于moontools的Request.JSON也是异步请求,所以当onsuccess还执行时,tocheck的return已经返回了,未能达到我想要的结果,后来百度也未找到解决方案,我只有去看monntools的源码和文档,然后看到了Request.JSON有个参数叫async,异步同步控制参数,默认为true,异步效果,如果改为false时,js执行就同步了,只有onSuccess执行了,才会继续tocheck的其他代码,如return retu;这样我的验证结果就能被取到了,然后带回页面,responseText同理也可以被取到,存到某个变量中然后带回你的调用处,如果是json可以先解析再带回,以上是本人解决该问题的思路。贴下:

this.tocheck = function(applyId,checkNum){

var url='sealApply!tocheck.jspa';

var retu=false;

var jsonRequest = new Request.JSON({

url:url,

async:false,//关键

onSuccess:function(responseJSON, responseText){

if(responseJSON.success){

retu=true;

}

},

onFailure:function(xhr){

alert(xhr);

}

}).post({"applyId":applyId,"checkNum":checkNum});

return retu;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐