if(strtolower($vdcode)!=$svali || $svali=='') {
ResetVdValue();
echo "验证码不正确";
exit();
};
这个是我ajax的代码
function add_ajaxmessage(){
//这里代码太多,省略了
$.ajax({
type: "POST",
url: "ask.php",
data: dataString,
success: function(data) {
//alert(data); //用这种方式的时候,echo的值可以正常弹出(弹窗形式)
$('#ok').html(data); //用这种方式的时候,echo的内容就不会返回到id='ok'的div里,如果吧exit();删除了,div就可以接收到echo的值,但是验证码输错的时候,代码却会继续往下执行
}
});
return false;
}
该怎么解决这样的问题啊,大半夜的在线等,急急急
19 个解决方案
#1
exit("验证码不正确");
#2
老哥 还是不行,ajax接收不到返回的值啊
alert(data);可以接到
$('#ok').html(data);就接不到了
问题出在哪啊
#3
要返回就不能用exit吧,
#4
那该怎么写,让echo的值返回到div中之后再终止,除了exit还有别的终止代码吗
#5
alert(data); //这样可以
$('#ok').html(data); //这样就可以
不可能前一句有值,后一句就没了
$('#ok').html(data); //这样就可以
不可能前一句有值,后一句就没了
#6
可是$('#ok').html(data);真不不能返回信息啊,我把exit删掉之后就能返回,加上exit就不能返回,而且php中的另一个echo "执行成功";就可以(这个没有exit终止),echo "验证码不正确"; exit();这就不行了,所以我很奇怪,按理说应该先执行echo后再exit的。怪就怪在这里。
偏偏alert(data);就正常。
#7
alert(data);
$('#ok').html(data);
这两个语句同时执行。
看看结果。
$('#ok').html(data);
这两个语句同时执行。
看看结果。
#8
同时执行,还是只弹窗有效,div不接收应有的值
#9
弹窗有值吗?有值的话说明echo 有效了。剩下的跟php没关系了。
#10
data有值么,console.log(data)出来看看
#11
弹窗有值,这么说问题出在ajax还是别的js里面?
#12
console可以看到正常的值,这个到底什么原因啊。愁死人了。偏偏页面打印不出来相应的值
#13
把输出信息换成英文看看
#14
换成英文或数字 都不行
#15
@xuzuning
@u014567183
发现问题所在了,但是不知道什么原因造成的,这个是验证码的php
这个是提交成功后发送邮件提醒的php
我把判断验证码的这一段放,到邮件提醒这段代码的后面就正常了,放到邮件提醒之前就不行,问题是出在哪里了?
@u014567183
发现问题所在了,但是不知道什么原因造成的,这个是验证码的php
$svali = GetCkVdValue();
if(strtolower($vdcode)!=$svali || $svali=='') {
ResetVdValue();
echo "验证码不正确";
exit();
};
这个是提交成功后发送邮件提醒的php
if($cfg_sendmail_bysmtp == 'Y')
{
$mailtitle = " 邮件提醒";
$mailbody = "您的信息于 {$sj} 提交成功";
$headers = $adminemail;
$mailtype = 'TXT';
require_once(INC.'/mail.class.php');
$smtp = new smtp($server,$port,true,$usermail,$password);
$smtp->debug = false;
$mail = "$email2,$cfg_smtp_jieshoumail";
$smtp->sendmail($smtpmail,$name ,$usermail, $mailtitle, $mailbody, $mailtype);
};
我把判断验证码的这一段放,到邮件提醒这段代码的后面就正常了,放到邮件提醒之前就不行,问题是出在哪里了?
#16
看不出你的两段代码有什么必然联系
都提交成功了,还验证个球?
都提交成功了,还验证个球?
#17
@xuzuning
问题就怪在这里啊,
真正的顺序应该是先检测验证码是否正确,不正确就终止(验证码检测是在php文件的最顶端),验证码正确就把信息以邮件的方式发送到邮箱,然后把数据写入数据库,然后提示用户“操作成功”
现在的情况是,按照这样的顺序,功能的确实现了,就是验证码输入错误的时候,应该提示用户“验证码错误”的,但是ajax就不接收这个值,造成前端的页面假死。
如果把验证代码放到邮件代码后面,顺序就变成了这样:用户提交信息,发送信息到邮箱,判断验证码不正确并终止。这样子前段可以接收到“验证码不正确”的提示,但是邮件已经发送。
我很好奇为什么验证信息放在邮件代码后面就可以ajax接收,放前面就不行,而且我刚才把邮件的那段代码删除试了试,在不需要发送邮件的情况下,验证码代码直接不提示了,放在哪里都不提示。什么原因啊
问题就怪在这里啊,
真正的顺序应该是先检测验证码是否正确,不正确就终止(验证码检测是在php文件的最顶端),验证码正确就把信息以邮件的方式发送到邮箱,然后把数据写入数据库,然后提示用户“操作成功”
现在的情况是,按照这样的顺序,功能的确实现了,就是验证码输入错误的时候,应该提示用户“验证码错误”的,但是ajax就不接收这个值,造成前端的页面假死。
如果把验证代码放到邮件代码后面,顺序就变成了这样:用户提交信息,发送信息到邮箱,判断验证码不正确并终止。这样子前段可以接收到“验证码不正确”的提示,但是邮件已经发送。
我很好奇为什么验证信息放在邮件代码后面就可以ajax接收,放前面就不行,而且我刚才把邮件的那段代码删除试了试,在不需要发送邮件的情况下,验证码代码直接不提示了,放在哪里都不提示。什么原因啊
#18
原因已经找到了,谢谢诸位。
是我大意了,为了让页面弹窗更柔和,设置了0.3秒后显示默认的弹窗:“正在提交,请不要刷新页面”,这样就造成了验证码不正确的提示被默认提示信息强行覆盖。而提交成功的提示由于需要发送邮件和储存数据库,有一定的延迟,故而在0.3秒之后才会显示,这样就能够覆盖了默认的提示。
我把0.3秒的默认弹窗取消之后就一切正常了。大意了...我的荆州啊。。。。。。。。
是我大意了,为了让页面弹窗更柔和,设置了0.3秒后显示默认的弹窗:“正在提交,请不要刷新页面”,这样就造成了验证码不正确的提示被默认提示信息强行覆盖。而提交成功的提示由于需要发送邮件和储存数据库,有一定的延迟,故而在0.3秒之后才会显示,这样就能够覆盖了默认的提示。
我把0.3秒的默认弹窗取消之后就一切正常了。大意了...我的荆州啊。。。。。。。。
#19
哈哈,你的荆州
#20
#1
exit("验证码不正确");
#2
老哥 还是不行,ajax接收不到返回的值啊
alert(data);可以接到
$('#ok').html(data);就接不到了
问题出在哪啊
#3
要返回就不能用exit吧,
#4
那该怎么写,让echo的值返回到div中之后再终止,除了exit还有别的终止代码吗
#5
alert(data); //这样可以
$('#ok').html(data); //这样就可以
不可能前一句有值,后一句就没了
$('#ok').html(data); //这样就可以
不可能前一句有值,后一句就没了
#6
可是$('#ok').html(data);真不不能返回信息啊,我把exit删掉之后就能返回,加上exit就不能返回,而且php中的另一个echo "执行成功";就可以(这个没有exit终止),echo "验证码不正确"; exit();这就不行了,所以我很奇怪,按理说应该先执行echo后再exit的。怪就怪在这里。
偏偏alert(data);就正常。
#7
alert(data);
$('#ok').html(data);
这两个语句同时执行。
看看结果。
$('#ok').html(data);
这两个语句同时执行。
看看结果。
#8
同时执行,还是只弹窗有效,div不接收应有的值
#9
弹窗有值吗?有值的话说明echo 有效了。剩下的跟php没关系了。
#10
data有值么,console.log(data)出来看看
#11
弹窗有值,这么说问题出在ajax还是别的js里面?
#12
console可以看到正常的值,这个到底什么原因啊。愁死人了。偏偏页面打印不出来相应的值
#13
把输出信息换成英文看看
#14
换成英文或数字 都不行
#15
@xuzuning
@u014567183
发现问题所在了,但是不知道什么原因造成的,这个是验证码的php
这个是提交成功后发送邮件提醒的php
我把判断验证码的这一段放,到邮件提醒这段代码的后面就正常了,放到邮件提醒之前就不行,问题是出在哪里了?
@u014567183
发现问题所在了,但是不知道什么原因造成的,这个是验证码的php
$svali = GetCkVdValue();
if(strtolower($vdcode)!=$svali || $svali=='') {
ResetVdValue();
echo "验证码不正确";
exit();
};
这个是提交成功后发送邮件提醒的php
if($cfg_sendmail_bysmtp == 'Y')
{
$mailtitle = " 邮件提醒";
$mailbody = "您的信息于 {$sj} 提交成功";
$headers = $adminemail;
$mailtype = 'TXT';
require_once(INC.'/mail.class.php');
$smtp = new smtp($server,$port,true,$usermail,$password);
$smtp->debug = false;
$mail = "$email2,$cfg_smtp_jieshoumail";
$smtp->sendmail($smtpmail,$name ,$usermail, $mailtitle, $mailbody, $mailtype);
};
我把判断验证码的这一段放,到邮件提醒这段代码的后面就正常了,放到邮件提醒之前就不行,问题是出在哪里了?
#16
看不出你的两段代码有什么必然联系
都提交成功了,还验证个球?
都提交成功了,还验证个球?
#17
@xuzuning
问题就怪在这里啊,
真正的顺序应该是先检测验证码是否正确,不正确就终止(验证码检测是在php文件的最顶端),验证码正确就把信息以邮件的方式发送到邮箱,然后把数据写入数据库,然后提示用户“操作成功”
现在的情况是,按照这样的顺序,功能的确实现了,就是验证码输入错误的时候,应该提示用户“验证码错误”的,但是ajax就不接收这个值,造成前端的页面假死。
如果把验证代码放到邮件代码后面,顺序就变成了这样:用户提交信息,发送信息到邮箱,判断验证码不正确并终止。这样子前段可以接收到“验证码不正确”的提示,但是邮件已经发送。
我很好奇为什么验证信息放在邮件代码后面就可以ajax接收,放前面就不行,而且我刚才把邮件的那段代码删除试了试,在不需要发送邮件的情况下,验证码代码直接不提示了,放在哪里都不提示。什么原因啊
问题就怪在这里啊,
真正的顺序应该是先检测验证码是否正确,不正确就终止(验证码检测是在php文件的最顶端),验证码正确就把信息以邮件的方式发送到邮箱,然后把数据写入数据库,然后提示用户“操作成功”
现在的情况是,按照这样的顺序,功能的确实现了,就是验证码输入错误的时候,应该提示用户“验证码错误”的,但是ajax就不接收这个值,造成前端的页面假死。
如果把验证代码放到邮件代码后面,顺序就变成了这样:用户提交信息,发送信息到邮箱,判断验证码不正确并终止。这样子前段可以接收到“验证码不正确”的提示,但是邮件已经发送。
我很好奇为什么验证信息放在邮件代码后面就可以ajax接收,放前面就不行,而且我刚才把邮件的那段代码删除试了试,在不需要发送邮件的情况下,验证码代码直接不提示了,放在哪里都不提示。什么原因啊
#18
原因已经找到了,谢谢诸位。
是我大意了,为了让页面弹窗更柔和,设置了0.3秒后显示默认的弹窗:“正在提交,请不要刷新页面”,这样就造成了验证码不正确的提示被默认提示信息强行覆盖。而提交成功的提示由于需要发送邮件和储存数据库,有一定的延迟,故而在0.3秒之后才会显示,这样就能够覆盖了默认的提示。
我把0.3秒的默认弹窗取消之后就一切正常了。大意了...我的荆州啊。。。。。。。。
是我大意了,为了让页面弹窗更柔和,设置了0.3秒后显示默认的弹窗:“正在提交,请不要刷新页面”,这样就造成了验证码不正确的提示被默认提示信息强行覆盖。而提交成功的提示由于需要发送邮件和储存数据库,有一定的延迟,故而在0.3秒之后才会显示,这样就能够覆盖了默认的提示。
我把0.3秒的默认弹窗取消之后就一切正常了。大意了...我的荆州啊。。。。。。。。
#19
哈哈,你的荆州