2012-02-13 126 views
0

我使用bvalidator(jquery驗證插件)來檢查用戶名是否存在於數據庫中。他們在文檔上有一個例子。但是,我不知道它是如何工作的。你可以在這裏看到更多的例子: http://karmela.fsb.hr/~bmauser/bvalidator/documentation.html#serversidevalidation檢查用戶名是否存在與bvalidator(jQuery驗證插件)

我試着創建自己的。然而,它總是告訴我,用戶名已被採取,無論如何...我是一個完整的新手,當涉及到AJAX。我幾乎不知道它。所以無論如何,這裏是我創建至今...

的index.php(主頁)

<script type="text/javascript"> 
$(document).ready(function() { 
$('#register').bValidator(optionsRed); 
}); 
function checkUsername(username) { 
    $.post("checkusername.php", { username: username }, function(data) { 
     if (data == 0) { 
      ret = true; 
     } else { 
      ret = false; 
     } 
     return ret; 
    }); 
} 
</script> 

<input type="text" name="username_register" id="textstyleid" data-bvalidator="checkUsername,required,rangelength[5:20]" data-bvalidator-msg="This username is not valid or already taken."/> 

checkusername.php(檢查是否存在用戶名)

<?php 

require '../connect.inc.php'; 
if (isset($_POST['username'])) { 
$username = mysql_real_escape_string($_POST['username']); 
if (!empty($username)) { 
$username_query = mysql_query("SELECT COUNT(uid) FROM users WHERE username='$username'"); 
$username_result = mysql_result($username_query, 0); 

if ($username_result == 0) { 
return 0; 
} else if ($username_result == 1) { 
return 1; 
} 
} 
} 

?> 

編輯 我注意到一個404錯誤。我修正了這一點。 PHP和AJAX正在工作。它根據預覽中輸入的文本給我一個0或1。但是,問題依然存在。我認爲它是因爲這一行代碼。我真的不明白這意味着什麼。什麼是數據

if (data == 0) { 
    ret = true; 
} else { 
    ret = false; 
} 
return ret; 
+0

能否請您使用類似螢火蟲/小提琴手,找出到底是什麼正在從服務器返回給客戶端,並張貼此爲我們? – 2012-02-13 04:33:02

+0

可以在Chrome或IE中使用firebug for firefox或開發工具(按F12)...您將能夠看到AJAX請求,以確定在帖子中發生了什麼以及PHP腳本返回的內容...然後你可以找出它的一個AJAX或PHP的問題... – 2012-02-13 04:39:48

+0

請參閱編輯。 – 2012-02-13 05:30:45

回答

0

看着它經過進一步的問題是你的PHP,你需要使用mysql_num_rows在你的結果比較0區域經濟共同體返回,結果對象本身只會給UA的資源ID如果echo'ed出

+0

我嘗試回顯結果。它工作正常。我用數據庫中存在的用戶名字符串替換了$ username。它返回1.我也嘗試用數據庫中不存在的用戶名字符串替換$ username。它返回0.我不認爲PHP代碼有問題。 – 2012-02-13 04:54:44

0

試試這個

if (data == 0) { 
    echo json_encode(TRUE); 
} else { 
    echo json_encode(FALSE); 
}