jquery问题,想破脑袋不知道为什么. 怎么俩次alert(b)显示的结果不一样呢?

[复制链接]
查看11 | 回复8 | 2011-5-17 04:40:53 | 显示全部楼层 |阅读模式
functiononSub(){
varp1=$(\"#txtYzm\").val();//获取验证码
if(p1==\"\"){
document.getElementById(\"lab_msg_yzm\").innerHTML=\"*验证码不能为空!\";
returnfalse;
}
varb=true;
$.ajax({
url:\"../Common/Login.ashx\",
type:\"POST\",
dataType:\"string\",
success:function(result){
//alert(result\":\"p1);
if(result!=\"\"){
if(result!=p1){
alert(\'您输入的验证码有误!\');
b=false;
ReCode();//重新获取验证码
}
}
}
});
alert(b);
alert(b);
returnb;
}

//重新获取验证码
functionReCode(){
varverify=document.getElementById(\'imgCheckCode\');
verify.setAttribute(\'src\',\'../CheckCode/CheckCode.aspx?\'Math.random());
}
回复

使用道具 举报

千问 | 2011-5-17 04:40:53 | 显示全部楼层
你是说下面这2个连续的alert,值不一样,是吗?
alert(b);
alert(b);
returnb;

ajax默认是异步处理,在调用ajax后,ajax没有返回之前,就执行了第一个alert,所以是true,在你点这个确定之前,ajax已经返回值了,并执行success函数,修改b的值,所以连续alert的值也不相同

如果没有这2个alert,那么你的这个ajax没有作用,这个onSub函数,始终返回true的

你的代码上加一个async:false,就可以了,如:
$.ajax({
url:\"../Common/Login.ashx\",
async:false,









<h4class=\"ask\">追问


async:false是干什么的呀
回复

使用道具 举报

千问 | 2011-5-17 04:40:53 | 显示全部楼层
就是让ajax同步执行
也就是说,ajax没返回结果,就不返回b
回复

使用道具 举报

千问 | 2011-5-17 04:40:53 | 显示全部楼层
布尔值b
回复

使用道具 举报

千问 | 2011-5-17 04:40:53 | 显示全部楼层
...你2次分别alert了什么?
回复

使用道具 举报

千问 | 2011-5-17 04:40:53 | 显示全部楼层
alert(b);
alert(b);
returnb;
}

俩次都是b
第一个是true第二个是false
回复

使用道具 举报

千问 | 2011-5-17 04:40:53 | 显示全部楼层
...哎,我知道你alert了b,你alert出来了什么值?.你这代码贴出来又不能走的..
回复

使用道具 举报

千问 | 2011-5-17 04:40:53 | 显示全部楼层
不论我验证码是否输入正确,第一次alert的都是true(b的初始值)
回复

使用道具 举报

千问 | 2011-5-17 04:40:53 | 显示全部楼层
哦,我知道你错在哪里了,你的第一个alert的时候你的ajax还没有返回,所以你的b是你的初始值true
第二个可能你的ajax返回了值,显示错了,所以是false,这个方法你return值没有意义的,
你把b的初始值设置为false
然后你在
if(result!=\"\"){
if(result!=p1){
alert(\'您输入的验证码有误!\');
b=false;
ReCode();//重新获取验证码
}
}

在返回方法里面写个提交方法.如果验证码正确了,提交表单

楼下的async:false的意思是同步执行
就是不异步走了,等这个ajax返回了才走后面的代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行