2015-01-16 35 views
0

此代码位于表单的onsubmit事件触发的JavaScript函数中。如果选择的用户名已存在,则提醒用户

var username = document.register.username.value; 
var phpUsernameFree = <?php 
    $username = "<script>document.write(username)</script>"; 
    $resultTempUsers = mysql_query("SELECT * FROM tempUsers WHERE username = '$username' ") or die(mysql_error()); 
    if(mysql_num_rows($resultTempUsers) == 0){ 
     echo 1; 
    }; 
?> ; 

if(phpUsernameFree == 0){ 
    toggleNew('usernameAlreadyExists', 1); 
    usernameCounter = 1; 
} 

我希望如果用户名已经存在于数据库中,会显示一个窗口,告诉用户用户名已经存在。

我已经尝试删除所有的php代码,并简单地用'echo 1'或'echo 0'替换它,并且工作,所以我知道代码执行。

我认为尝试从数据库中读取信息存在问题。

编辑:

好吧,我已经试过与阿贾克斯这样做,至今没有工作。我下载了jQuery的,现在我尝试这种代码:

usernameTaken = checkUserExistence(username, 'username'); 
if(usernameTaken == 1){ 
    toggleNew('usernameAlreadyExists', 1); 
    usernameCounter = 1; 
} 

function checkUserExistence(str, type){ 
    var dataString = 'str=' + str + '&type=' + type; 
    if($.trim(str).length>0 && $.trim(type).length>0){ 
     $.ajax({ 
      type: "POST", 
      url: "existance.php", 
      data: dataString, 
      cache: false, 
      beforeSend: function(){ $("#submit").val('Sending...');}, 
      success: function(data){ 
       if(data){ 
        return 1; 
       }else{ 
        return 0; 
       } 
      } 
     }); 
    } 
    return false; 
} 

我existance.php看起来是这样的:

<?php 

*include connection to database here* 

$data = $_POST["data"]; 
$type = $_POST["type"]; 
$resultUsers = mysql_query("SELECT * FROM users WHERE username = '$data' ") or die(mysql_error()); 
if(mysql_num_rows($resultUsers) == 1){ 
    echo 1; 
} 
?> 

目前什么时,使用此代码是,当我按下提交按钮会发生,那么值会更改为'正在发送...',就像beforeSend属性一样,但是没有其他事情发生。

+0

看看ajax;你试图让浏览器执行这个逻辑,它不会发生。你需要一些东西来与服务器连接。 [你需要知道的一切都在这里](http://stackoverflow.com/questions/8567114/how-to-make-an-ajax-call-without-jquery) – Ohgodwhy

+0

它会更简单,如果你会使用jQuery ajax函数...你可以参考这个例子的代码http://www.9lessons.info/2014/07/ajax-php-login-page.html –

回答

0

如果你不想使用jquery,你需要AJAX来做到这一点。 事情是这样的:

<script> 
function Login(str) { 
    if (str.length == 0) { 
     document.getElementById("txtHint").innerHTML = ""; 
     return; 
    } else { 
     var xmlhttp = new XMLHttpRequest(); 
     xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
       document.getElementById("Msg").innerHTML = xmlhttp.responseText; 
      } 
     } 
     xmlhttp.open("GET", "Login.php?q=" + str, true); 
     xmlhttp.send(); 
     } 
} 
</script> 

的login.php:

$username = $_REQUEST["q"]; 
$resultTempUsers = mysql_query("SELECT * FROM tempUsers WHERE username = '$username' ") or die(mysql_error()); 
if(mysql_num_rows($resultTempUsers) == 0){ 
    echo "User free"; 
}else{ 
echo "User exist"; 
} 

类似的东西,不工作,但一个想法。

0

最好的方法是使用ajax。你应该这样做:

$("#inputId").keyUp(function(){ 
    //This event, raised when the textbox value changed 
    //inside this event, you can call ajax function and check user existance and if result is false you can disable the submit button 
}); 
0

取代提交按钮使用正常按钮,根据响应值提交ajax响应后的表单。

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Test</title> 
     <script> 
     function checkUserExistence(){ 
      var username = document.register.username.value; 
      var xmlhttp; 
      if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest();} else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");} 
      xmlhttp.onreadystatechange = function() { 
       if (xmlhttp.readyState == 4) { 
        if(xmlhttp.status == 200){ 
         phpUsernameFree = xmlhttp.responseText; 
         if(phpUsernameFree == 0){ 
          alert("username Already Exists"); 
         } else { 
          alert("username available."); 
          register.submit(); 
         } 
        } else if(xmlhttp.status == 400) { 
         alert("There was an error 400"); 
        } else { 
         alert("something else other than 200 was returned"); 
        } 
       } 
      } 
      xmlhttp.open("GET", "service.php?username=" + username, true); 
      xmlhttp.send(); 
     } 
     </script> 
    </head> 
    <body> 
     <form id="register" name="register" method="post"> 
      <input type="text" name="username" id="username" value="check" /> 
      <input type="button" id="save" name="save" value="Save" onclick="checkUserExistence();" /> 
     </form> 
    </body> 
</html> 

<!-- service.php --> 
<?php 
$username = $_REQUEST["username"]; 
$resultTempUsers = mysql_query("SELECT * FROM tempUsers WHERE username = '$username' ") or die(mysql_error()); 
if(mysql_num_rows($resultTempUsers) == 0){ 
    echo 1; 
}; 
?>