ajax异步回调传值,JS异步获取的回调函数如何把值传到父级中

我用的是jquery validationEngine这个插件。我需要在JS中做验证,不能在html页面上使用validate[]这种形式。

//验证函数

_validate = function(node,rules){

var nodeValue = $(node).val(),//input的值

nodeId = $(node).attr('id')//input的ID

tips = '',//提示信息

isPass = false,//如果验证不通过,则为false

tipStatus = '';//提示类型 pass,load,error

for(i in rules){

swith (i){

case 'required':

if(!nodeValue){

console.log(1);//执行顺序测试

isPass= false;

tipStatus = 'error';

tips += '* 此值不能为空'+'
';

}

break;

case 'minSize':

....

break;

case 'ajax':

switch(rules.ajax){

case 'ajaxUserCall'://验证是否已注册

if(nodeValue && isPass){//其他验证成功的情况下才做此验证

$.get('./?mod=member&ac=check&op=username',

{

elId:nodeId,

elValue:nodeValue

},

function(data){

console.log(1);//执行顺序测试

if(data[1]){//返回成功

tipStatus = 'pass';

}else{

tipStatus = 'error';

}

//具体验证

console.log(2);//执行顺序测试

$('#username').on('blur',function(){

_validate('#username',{'required':'','minSize':4,'ajax':'ajaxUserCall'});

});

遇到的问提是在验证required的时候isPass,tips,tipStatus赋的值都能传递到“具体验证”的位置,在console中打印出来是正常的。

但是在ajaxUserCall验证时的赋值,就无法传递到这里。打印出来的值是在var初始化时的值。

我在required和ajaxUserCall的回调函数中分别打印console.log(1),在“具体验证”的位置打印console.log(2)。

当我做required验证时,console中显示的是1,2。但在做ajax验证的时候,console打印出的是2,1。感觉ajax的回调函数是在整个函数执行完之后才执行的,是不是这个原因我也不太清楚。想请教一下,如何解决这个问题,能正确的传值。谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值