2015-09-04 4 views
0

Ниже представлен мой html, мне нужно диалоговое окно ввода без формата формы.Ajax php не проверяет функцию

<!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>"; 
      } 
    ?> 

Это моя работа, но не может проверить пользователя, что мой неправильно, кто может помочь коррекции?

+0

, но не может подтвердить, что пользователя недостаточно, чтобы понять, что происходит. можете ли вы объяснить, что вы ожидаете и что делает? – Saif

ответ

0

Изменение вашего кода PHP ($ _POST до $ _REQUEST), как,

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

И функция 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."; 
    } 
?> 
+0

спасибо за то, что я решил это ... проблема _REQUEST – Ricky

1

Вы используете GET в своем запросе XmlHTTP и $_POST в validate.php. Пожалуйста, исправьте это и дайте мне знать, как это работает.

Также ваши методы javascript не соответствуют checkNameValidate & checkName. Вам нужно получить ответ и выполнить свою логику (что я не уверен, что это такое).

Обратите внимание: http://www.w3schools.com/ajax/ajax_xmlhttprequest_response.asp для более подробной информации.

+0

Опубликуйте это в разделе комментариев. Не ответ – aldrin27

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); 

Вы используете ДЖЕРИ.

$.get("validate.php?username="+username, function(responseText) { 
    alert(responseText); 
}); 
Смежные вопросы