2013-06-29 85 views
0

我有一個非常簡單的形式建立,我使用jQuery驗證檢查我的領域,這似乎是工作文件。然後我想用php文件設置遠程,以檢查用戶名的可用性。當我回顯check_num_rows時,我得到與輸入相匹配的行數。jQuery驗證插件遠程不能用PHP工作if語句

$check_num_rows = mysql_num_rows($check); 

我不想匹配的只是數量明顯,所以我加了一個if語句使它看起來像這樣...

$username = mysql_real_escape_string($_GET['username']); 

$check = mysql_query("SELECT username FROM users WHERE username='$username'"); 
$check_num_rows = mysql_num_rows($check); 

if ($check_num_rows == 1) 
{ 
    echo "Username taken!"; 
} 

定期驗證仍然有效,但我不」不像以前那樣得到回聲,這導致我相信這只是最後幾行代碼的錯誤,但我沒有看到它。以下是Jquery驗證部分。

$("#register").validate({   
rules: { 
    username: { 
     minlength: 5, 
     remote: "check-username.php"  
}, 
    password: { 
     minlength: 6 
    } 
} 
}); 

我已經看到類似的問題的其他答案,但沒有什麼適合在這裏。謝謝!

回答

0

As per documentation for the remote method

服務器側資源經由jQuery.ajax(XMLHttpRequest的)和 稱爲得到一個密鑰/值對,對應於所述驗證​​ 元素的名稱和其作爲GET參數值。該響應被評估爲 JSON和必須是有效元素真,並且可以是任何假的, undefined或null爲無效元素,使用默認的消息;或 一個字符串,例如。 「該名稱已被佔用,請嘗試將peter123」改爲 顯示爲錯誤消息。

注意上面的粗體字部分。我沒有看到你的PHP如何/在哪裏返回true響應。

+0

謝謝!根據你的建議,我添加了「其他」聲明。現在,當我返回true時,沒有任何迴應屏幕,當它是假的我有「用戶名採取」這正是我想要的。我還添加了json_encode。代碼現在看起來像這樣...'$ username = mysql_real_escape_string($ _ GET ['username']); $ check = mysql_query(「SELECT username FROM users WHERE username ='$ username'」); $ check_num_rows = mysql_num_rows($ check); 如果($ check_num_rows> 0){ $ 無效= 「用戶名被取!」; } 其他{$ 無效= 「真」; } 回聲\ json_encode($無效);' – user2530671