我正在使用其他方法使用jquery.validate检查capcha验证
$.validator.addMethod("ajax_validation", function(value) {
var ajax_data='ajax_mode=capcha_validation&code='+value;
$.ajax({
type: "POST",
url: "/app/ajax_validation/",
data: ajax_data,
dataType: "text",
success: function(msg){
if(msg=='true')
{
alert('true');
return true;
}
else
{
alert('false');
return false;
}
}
});
}, 'Please enter code correctly!');
即使我保留真值,也会在屏幕上始终显示如何处理此错误。
答案 0 :(得分:2)
如果要捕获结果并继续进行,则需要以同步格式调用jquery ajax。在您的代码中,无论结果如何,都会发生默认行为(我认为应该是错误消息)。
不要忘记jQuery Ajax调用默认是Async(“Async”中的“A”是异步的)如果你想以同步的方式进行ajax调用,你需要将它变为'false',如下所示: />
(为了清楚起见,我把你的方法放在一个单独的函数中)
function ajax_validation(ajax_data) {
var ajax_data='ajax_mode=capcha_validation&code='+value;
var result;
$.ajax({
type: "POST",
async: false,
url: "/app/ajax_validation/",
data: ajax_data,
dataType: "text",
success: function(msg){
result= msg.d;
}
});
return result;
}
//...
但请注意,ajax同步调用可能会冻结浏览器,通常不是一个好习惯。