Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回false在jQuery ajax中不起作用_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 返回false在jQuery ajax中不起作用

Javascript 返回false在jQuery ajax中不起作用,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在使用jqueryajax编写一个注册表。我的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(),.

我正在使用jqueryajax编写一个注册表。我的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>   
函数validateData()
{
var email=jQuery(“#email”).val();
var username=jQuery(“#username”).val();
var emailReg=/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
var regex=new RegExp(/^\+?[0-9(),.-]+$/);
如果(!emailReg.test(电子邮件))
{
警报(“请输入有效电子邮件”);
返回false;
}
var协议=jQuery(“#agereement”)。为(“:选中”);
如果(协议==错误)
{
警告(“请同意协议!!!”;
返回false;
}
var pass=jQuery(“#密码”).val();
var repass=jQuery(“#repeatpass”).val();
如果(通过!=重新通过)
{
警报(“密码和重复密码应相同”);
返回false;
}
var FirstData=“email=“+email+”&username=“+username;
var url=“ajaxcheck.php”;
jQuery.ajax({
数据类型:“html”,
键入:“GET”,
url:url,
数据:第一数据,
完成:函数(){},
成功:功能(数据)
{
如果(数据=“”)
{
警惕(“没问题”);
var flag=“true”;
}
否则{
警报(“用户名或电子邮件ID已存在”);
var flag=“false”;
}
}   
});
警报(旗帜);
返回标志;
}

当我提交表单并输入数据库中已经存在的用户名值时,它会提醒
用户名或电子邮件ID已经存在
,但提交表单而不是停留在页面上。如果出现错误,我该怎么办?然后它应该留在页面上,而不是提交表单

使用
onsubmit
in-form标签

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

....

使用
onsubmit
表单标签

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

....
当你写:

var flag=“true”;
…
var flag=“false”;
…
返回标志;
问题是
“true”
“false”
包含单词“true”或“false”。要获取实际值
true
false
,请去掉引号:

var标志=true;
…
var标志=假;
…
返回标志;
事件处理程序只理解布尔返回值,而不理解字符串。

当您写入:

var flag=“true”;
…
var flag=“false”;
…
返回标志;
问题是
“true”
“false”
包含单词“true”或“false”。要获取实际值
true
false
,请去掉引号:

var标志=true;
…
var标志=假;
…
返回标志;

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

您正在将
标志设置为字符串,而不是布尔值。尝试使用
true
false
而不是
“true”
“false”
,两者都是真实的。

您将
标志设置为字符串,而不是布尔值。尝试使用
true
false
而不是
“true”
“false”
,两者都是真实的。

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

下面是一个关于如何进行表单验证的示例(使用bootstrap/php/jquery):

Ajax“.done”发生在服务器成功响应时,而“.fail”发生在发送请求或接收响应失败时。假设您想检查电子邮件是否存在,那么您可以使用以下内容:

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

我想从另一个角度帮助你

下面是一个关于如何进行表单验证的示例(使用bootstrap/php/jquery):

Ajax“.done”发生在服务器成功响应时,而“.fail”发生在发送请求或接收响应失败时。假设您想检查电子邮件是否存在,那么您可以使用以下内容:

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


你知道异步是什么意思,对吧?@u\u mulder,OP使用的是异步:false,
意味着ajax调用将/应该是synchronous@PatrickEvans,谢谢,然后转到字符串值)我建议使用html5而不是javascript进行更多验证,请使用required,正确的输入类型,而不是你知道什么是异步的,对吗?@u\u mulder,OP使用的是异步:false,
意味着ajax调用将/应该是synchronous@PatrickEvans,谢谢,然后转到字符串值)我建议使用html5而不是javascript进行更多验证,请使用required,正确的输入类型instedi已经做到了这一点,但它没有警告flag alsoI的值。我并没有说您必须删除现有代码中的
警报
s–您只需要使用
var flag=
更改两行。如果您保持现有的
警报
s,它们在该更改后仍应工作。在控制台中,它表示未定义标志。我已经这样做了,但它不会提醒标志的值。我并不是说您必须删除现有代码中的
警报
s–您只需要使用
var flag=
更改两行。如果您保持现有的
警报
s,则它们在该更改后仍应工作。在控制台中,它表示未定义标志也要按照@Rory的建议应用,请将
“true”
替换为
true
,将
“false”
替换为
false
,这也是您首先得到的,
警报标志值
用户已存在
?我认为您应该使用
异步:false,
您也可以共享您的html表单标记吗?也可以按照@Rory的建议应用,将
的“true”
替换为
的true
,将
的“false”
替换为
的false
以及您首先得到的内容,
警报标志值
或<