始终在jquery中提交return false

时间:2015-03-16 07:06:27

标签: javascript jquery

这是我的代码,如果(flag ==“no”)不工作,标志值不会改变,总是阻止默认。在我的代码中有任何错误。 ajax返回是正确的。

$(document).ready(function() {
    $('#submit').click(function(event) {
        var captcha = $("#captcha").val();
        var flag = "no";
        if (captcha == '') {
            alert("Fill Captcha Field");
            event.preventDefault();
        } else {
            var dataString = captcha;
            $.ajax({
                type: "POST",
                url: "verify.php",
                data: {
                    code: captcha
                },
                success: function(data) {
                    if (data == "no") {
                        alert("Invalid Captcha");
                    } else {
                        flag = "yes";
                    }
                }
            });
        }
        if (flag == "no") {
            return false;
        } else {
            return true;
        }
    });
});

2 个答案:

答案 0 :(得分:0)

你可以尝试这个,它的工作实例。

var jqXHR = $.ajax({
        url: "verify.php",
        type: "POST",
        data: {code: captcha},
        async: false,
        success: function (data) {
        }
    });

if(jqXHR.responseText=="no")
 {
 alert("Invalid Captcha");                                              
 }
 else
 {
 flag="yes";
 }

if(flag=="no")
 {
 return false;
 }
 else{
 return true;
 }

从ajax请求成功返回数据后它将返回

答案 1 :(得分:0)

默认情况下,javascript请求是异步发送的。当ajax被调用需要时间来获取响应javascript执行下一个代码。在你的代码中这是同样的问题。使用下面的代码

$(document).ready(function() {

  $('#submit').click(function(event) {
    var captcha = $("#captcha").val();
    var response ;
    if (captcha == '') {
        alert("Fill Captcha Field");
        event.preventDefault();
    } else {
      var dataString = captcha;
      response = $.ajax({
            type: "POST",
            url: "verify.php",
            data: {
                code: captcha
            },
            success: function(data) {

            }
        }).responseText;
    }

     if (response == "no") {
           alert("Invalid Captcha");
           return false;
      } else {
           return true;
      }
 });
});