此代碼位於表單的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屬性一樣,但是沒有其他事情發生。
看看ajax;你試圖讓瀏覽器執行這個邏輯,它不會發生。你需要一些東西來與服務器連接。 [你需要知道的一切都在這裏](http://stackoverflow.com/questions/8567114/how-to-make-an-ajax-call-without-jquery) – Ohgodwhy
它會更簡單,如果你會使用jQuery ajax函數...你可以參考這個例子的代碼http://www.9lessons.info/2014/07/ajax-php-login-page.html –