返回false不能在jQuery ajax中工作

时间:2016-05-21 11:59:16

标签: javascript jquery ajax

我正在使用jquery ajax编写注册表单。我的jQuery代码如下:

function validateData()
{
    var email = jQuery("#email").val();
    var username = jQuery("#username").val();
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;   
    var regex = new RegExp(/^\+?[0-9(),.-]+$/); 
    if(!emailReg.test(email))   
    {
        alert('Please enter valid email');
        return false;   
    }
    var agreement = jQuery("#agereement").is(":checked");
    if(agreement == false)
    {
        alert("Please agree with the agreement !!! ");
        return false;
    }
    var pass = jQuery("#password").val();
    var repass = jQuery("#repeatpass").val();
    if(pass != repass)
    {
        alert("Password & Repeat Password Should be same");
        return false;
    }

        var FirstData = "email=" + email+"&username="+username;
        var url = "ajaxcheck.php";
        jQuery.ajax({
            dataType : 'html',
            type: 'GET',
            url : url,
            data : FirstData,
            complete : function() { },
            success: function(data) 
                {
                    if(data == '')
                    {
                        alert("No Problem");
                        var flag = "true";
                    }
                    else{
                        alert("Username Or Email ID Already Exists");
                        var flag = "false";                     
                    }

                }   
        });
        alert(flag);
        return flag;
}
</script>   

当我提交表单并输入已存在于DB中的用户名值时,它会提醒Username Or Email ID Already Exists但提交表单而不是留在页面上。如果出现错误我该怎么办呢?它应该留在页面而不是提交表格

4 个答案:

答案 0 :(得分:2)

当你写:

    var flag = "true";
…
    var flag = "false";
…
return flag;

问题是"true""false"strings,其中包含单词“true”或“false”。要获取实际的booleantruefalse,请删除引号:

    var flag = true;
…
    var flag = false;
…
return flag;

事件处理程序只能理解布尔返回值,而不是字符串。

答案 1 :(得分:1)

在表单标记中使用onsubmit

<form onsubmit="return validateData();">
 ....
 <input type="submit">
</form>

答案 2 :(得分:1)

我试图从另一个角度帮助你。

以下是如何进行表单验证的示例(使用bootstrap / php / jquery):http://formvalidation.io/examples/contact-form/

Ajax&#34; .done&#34;当你从服务器得到一个成功的响应并且&#34; .fail&#34;发送请求或收到响应失败时发生。假设您要检查电子邮件是否存在,那么您可以使用以下行中的内容:

if(response.IsEmailValid === 'false')
{
    $('#alertContainer')
        .removeClass('alert-success')
        .addClass('alert-warning')
        .html('Sorry, email has been taken')
        .show()
}

答案 3 :(得分:0)

您将flag设置为字符串,而不是布尔值。尝试使用truefalse代替"true""false",这两者都是真实的。