【问题标题】:onkeypress Email Validation using ajax js and php使用 ajax js 和 php 的 onkeypress 电子邮件验证
【发布时间】:2013-04-24 21:37:57
【问题描述】:

前言:这最终会扩展为一份注册表,但我更关心的是先完成一部分。

现在您将无法连接到我的服务器,但我确实需要帮助,或者至少解释一下为什么此代码无法正常工作。我已经为此工作了一周左右,但没有发现与我的问题真正相似的东西。

HTML:

<html>
    <head>
        <script type="text/javascript" src="checking.js"></script>
    </head>
    <body>
        <span id="conTest">
        <?php
            $con = mysqli_connect("L28-6","turkey","supersecretpassword","stored");
            if (mysqli_connect_errno($con))
            {
                echo"Failed to connect to MySQL: " . mysqli_connect_error();
            } else {
                echo "success";
            }
        ?>
        </span>
        Email: <input type="text" id="email" onkeyup="emailCheck(this.value)"/>
        <br/>
        <span id="emailError"></span>
    </body>
</html>

主要错误出现在 js 中的某个地方,如下所示:

function emailCheck(inputvalue) 
{    
    var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
    var span=document.getElementById("emailError");
    if(pattern.test(inputvalue))
    {         
        span.innerHTML="true..checking";    
        var myRequest = new XMLHttpRequest();
        var response = myRequest.reponseText;
        myRequest.onreadystatechange = function()
        {
            if(myRequest.readyState == 4 && myRequest.status == 200)
            {
                if(response.test(inputvalue))
                {
                    span.innerHTML="already in use";
                }
                else
                {
                    span.innerHTML="valid";
                }
            }

            myRequest.open("POST", "email.php", true);
            myRequest.send();
        }
    }
    else
    {   
        span.innerHTML="not valid email"; 
    }
}

问题肯定出在 ajax 调用上,但这里是 php 部分(尚未处于工作状态):

<?php
mysqli_query($con,"select user_email from email");
?>

我知道它有很多代码,但我非常感谢任何输入。 此外,当使用格式正确的电子邮件时,页面的响应如下:

电子邮件:asdfasdf@yahoo.com
真的..检查

所以我确定它甚至没有放入 myRequest.readystatechange 函数,因为如果它应该返回“无效电子邮件”。

【问题讨论】:

    标签: php javascript ajax validation email


    【解决方案1】:

    您的 ajax 请求在 readystatechange 中。这意味着永远不会调用 ajax 请求。

    试试类似的东西:

    function emailCheck(inputvalue) 
    {   
    var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
    var span=document.getElementById("emailError");
    if(pattern.test(inputvalue))
    {         
        span.innerHTML="true..checking";    
        var myRequest = new XMLHttpRequest();
        var response = myRequest.reponseText;
        myRequest.onreadystatechange = function()
        {
            if(myRequest.readyState == 4 && myRequest.status == 200)
            {
                if(response.test(inputvalue))
                {
                span.innerHTML="already in use";
                }
                else
                {
                span.innerHTML="valid";
                }
            }
    
        }
        myRequest.open("POST", "email.php", true);
        myRequest.send();
    }
    else
    {   
        span.innerHTML="not valid email"; 
    }
    }
    

    我发现您的代码存在另一个问题。邮件在填写完成前仍然有效

    something@domain.c 将有效,即使我需要通知 something@domain.com。使用按钮请求验证

    【讨论】:

    • 哇哦,谢谢。我为 ajax 部分创建了一个单独的函数,并创建了一个“如果匹配模式显示验证按钮”。至于匹配的问题:我打算使用不同的验证检查技术,但我使用的盒子仅限于我的学校网络(所以我无法访问互联网),因此发现正则表达式的东西最有用。再次感谢
    猜你喜欢
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    相关资源
    最近更新 更多