php - onkeypress 使用 ajax js 和 php 进行电子邮件验证

标签 php javascript ajax validation email

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

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

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 函数中,因为如果它在应该的位置,至少会返回“无效电子邮件”。

最佳答案

你的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.com,something@domain.c 也将有效。使用按钮请求验证

关于php - onkeypress 使用 ajax js 和 php 进行电子邮件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16308837/

相关文章:

JavaScript - 模型和 View 模型的客户端分离?

javascript - node-webkit:如何检测有多少屏幕/显示器用户在使用?

jquery - highcharts刷新CSV数据重复而不刷新

php - Composer 更新 php laravel 时出错? ("laravel/framework": "~5.0")

PHP:获取 HTML 网页的所有 CSS 文件

php - 获取 <select> 中 <option> 的内容而不是值

php - 你如何在 wordpress 中使用 session 变量?

javascript - d3.js arc.centroid(d): Error: Invalid value for <text> attribute transform ="translate(NaN,NaN)"

javascript - 我的 foursquare api 调用出了什么问题?

javascript - 对文档加载的 Ajax 调用不起作用