如何获取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;
}
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;
}
相关文章推荐
- AFNetworking 2.0 获取json数据时,返回 NSLocalizedDescription=Request failed: unacceptable content-type: text/html, 解决方法.
- Ext.Ajax.Request 如何将response.responseText作为函数返回值返回?
- Ajax请求Servlet返回文本 json html和XML数据并解析xml及responseText和responseXML的区别
- struts2如何获取Request-Session-ServletContext-Response
- C#利用HttpWebRequest,Stream,HttpWebResponse,StreamReader获取post返回的数据
- json应用,responseText,responseXml,XMLhttpRequest和ajax开发框架
- json应用,responseText,responseXml,XMLhttpRequest和ajax开发框架
- js,jquery无法获取后台(Response.Write())返回的json
- ASP.NET环境下XMLHttpRequest中responseText()方法返回值为空问题讨论
- struts2如何获取Request-Session-ServletContext-Response
- Struts 2 的Action中如何获取request、response、session、application等web元素(2)
- ajax开发框架和XMLhttpRequest、responseText、responseXml和JSON的应用
- struts2中如何获取request,response,session对象
- 在java中如何在非servlet的普通类中获取request、response、session
- vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
- CefSharp之三-如何获取request和response
- ajax开发框架和XMLhttpRequest、responseText、responseXml和JSON的应用
- Java乔晓松-ajax开发框架和XMLhttpRequest、responseText、responseXml和JSON的应用
- ajax开发框架和XMLhttpRequest、responseText、responseXml和JSON的应用
- 如何通过URL获取天气PM2.5的数据,返回json