2015-01-16 63 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; 
}; 
?>