Ajax php验证没有功能

时间:2015-09-04 04:58:47

标签: javascript php jquery ajax

下面是我的html,我需要没有表单格式的输入对话框。

<!DOCTYPE>
<html>

<head>
    <script>
        var username;

        function myFunction() {
            //input dialog
            username = prompt("Please enter your name", "");
            if (username != "") {
                checkNameValidate();
            } else {
                alert("The name is empty, please insert your name");
            }
        }

        function checkName() { //ajax to validate.php
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.open("GET", "validate.php?username=" + username, false);
            xmlhttp.send(null);

            //doFunction();
        }

        function doFunction() {
            //function
        }
    </script>
</head>

<body>
    <input type="button" onclick="myFunction()" value="Name" />
</body>

</html> 

下面是validate.php代码,我的数据库名称是testajax,

<?php
    $username=$_POST["username"];

    mysql_connect("localhost","root","");
    mysql_select_db("testajax");

    $query1 = mysql_query("select * from user where name='$username'");
    if(mysql_num_rows($query1)>0){
            echo "<script language=javascript>alert('The name have used');</script>";
            }
    ?>

这是我的工作,但无法验证用户,我的错误是什么,任何人都可以帮忙纠正?

3 个答案:

答案 0 :(得分:1)

您在GET请求中使用XmlHTTP,在$_POST中使用validate.php。 请更正并让我知道它是如何工作的。

此外,您的javascript方法不匹配checkNameValidate&amp;检查名。 你需要获得响应并做你的逻辑(我不确定它是什么)。

请参阅:http://www.w3schools.com/ajax/ajax_xmlhttprequest_response.asp了解更多详情。

答案 1 :(得分:0)

将您的PHP代码更改为($ _POST到$ _REQUEST),例如,

<?php
   $username=$_REQUEST["username"];

在您的javascript代码中调用函数checkName()而不是checkNameValidate()

您需要为响应添加onreadystatechange函数,请尝试以下代码,

var xmlhttp;
function myFunction() {
    username = prompt("Please enter your name", "");
    if (username != "") {
        checkName(username);
    } else {
        alert("The name is empty, please insert your name");
    }
}
function checkName(username) { //ajax to validate.php

    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function ()
    {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            alert(xmlhttp.responseText);
        }
    }
    xmlhttp.open("GET", "validate.php?username=" + username, false);
    xmlhttp.send(null);
}

如果您使用的是jquery,请使用$.ajax()

您的PHP代码可以更好,

<?php
    // for get method not for post
    // check username is set or not
    $username=isset($_GET["username"]) ? $_GET["username"] : '';
    if($username){ // check if username is not empty
       mysql_connect("localhost","root","");
       mysql_select_db("testajax");

       $query1 = mysql_query("select * from user where name='$username'");
       if(mysql_num_rows($query1)>0){
           echo "The name have used.";
       } else {
           echo "Username not exists, proceed.";
       }
    } else {
       echo "Please enter username.";
    }
?>

答案 2 :(得分:0)

您可以通过XMLHttpRequest.responseText获取它,如下所示,但它与IE6 / 7浏览器不兼容。

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
        alert(xmlhttp.responseText);
    }
}
xmlhttp.open("GET","validate.php?username="+username,false);
xmlhttp.send(null);

你应该使用JQUERY。

$.get("validate.php?username="+username, function(responseText) {
    alert(responseText);
});