[英]user check availability with jQuery
我正在嘗試檢查我的用戶名是否可以使用jQuery進行注冊,該腳本實際上沒有錯誤,但是即使數據庫中沒有用戶名記錄,它也會一直說" the username in use "
。
這是我的功能的PHP代碼
function checkavailabileUserName($UserName) {
if(isSet($_POST['userName']))
{
$username = $_POST['userName'];
$sql_check = mysql_query("SELECT userUserName FROM user WHERE userUserName='$username'") or die(mysql_error());
if(mysql_num_rows($sql_check))
{
echo '<font color="red">The username <STRONG>'.$username.'</STRONG> is already in use.</font>';
}
else
{
echo 'OK';
}
}
}
我在這樣的名為RegisterUserAction.php
的頁面上調用此函數
checkavailabileUserName($UserName);
這是JAVASCRIPT代碼
pic1 = new Image(16, 16);
pic1.src = "loader.gif";
$(document).ready(function(){
$("#userName").change(function() {
var usr = $("#userName").val();
if(usr.length >= 3)
{
$("#status").html('<img src="loader.gif" align="absmiddle"> Checking availability...');
$.ajax({
type: "POST",
url: "RegisterUserAction.php",
data: "userName="+ usr,
success: function(msg){
$("#status").ajaxComplete(function(event, request, settings){
if(msg == 'OK')
{
$("#userName").removeClass('object_error'); // if necessary
$("#userName").addClass("object_ok");
$(this).html(' <img src="accepted.png" align="absmiddle"> <font color="Green"> Available </font> ');
}
else
{
$("#userName").removeClass('object_ok'); // if necessary
$("#userName").addClass("object_error");
$(this).html(msg);
}
});
}
});
}
else
{
$("#status").html('<font color="red">The username should have at least <strong>3</strong> characters.</font>');
$("#userName").removeClass('object_ok'); // if necessary
$("#userName").addClass("object_error");
}
});
});
最后是該領域的HTML代碼
<td><label for="userName"></label>
<input type="text" name="userName" id="userName" onkeyup="twitter.updateUrl(this.value)" class="inn" />
<div id="status"></div>
<script type="text/javascript">
$( function () {
twitter.screenNameKeyUp();
$('#user_screen_name').focus();
});</script>
我哪里做錯了 ?
您的代碼有誤。 您正在使用$ UserName作為函數checkavailabileUserName的參數,但沒有將該參數傳遞給函數。 這將導致錯誤,因此只有您收到消息“正在使用用戶名”。
從函數中刪除$ UserName參數,代碼將正常工作。
如果您可以使代碼更整潔並使用jquery ajax調用和PHP代碼,例如:
jQuery Ajax調用
jQuery(document).ready(function(){
jQuery("#userName").change(function() {
jQuery("#status").empty();
var usr = jQuery("#userName").val();
if(usr.length >= 3)
{
jQuery("#status").html('<img src="loader.gif" align="absmiddle"> Checking availability...');
jQuery.ajax({
type: "POST",
url: "RegisterUserAction.php" ,
data: "userName="+ usr,
success: function(response){
if(response)
{
jQuery('#status').html('<img src="accepted.png" align="absmiddle"> <font color="Green"> Available </font>');
return true;
}
else
{
jQuery('#status').html('<font color="red">The username <STRONG>'+usr+'</STRONG> is already in use.</font>');
return false;
}
}
});
}
else
{
jQuery("#status").html('<font color="red">The username should have at least <strong>3</strong> characters.</font>');
return false;
}
});
});
PHP代碼:
function checkavailabileUserName($checkavailabileUserName)
{
if(isset($_POST['userName']))
{
$username = $_POST['userName'];
$sql_check = mysql_query("SELECT userUserName FROM user WHERE userUserName ='$username'") or die(mysql_error());
if(mysql_num_rows($sql_check)>0)
{
echo false;
}
else
{
echo true;
}
}
else
{
echo false;
}
}
首先,應根據所選擇的瀏覽器使用FF或Chrome / IE瀏覽器的Firebug開發工具(按F12鍵)。 看一下控制台,看看AJAX帖子是什么樣子。 確保正確過帳並且您具有實際價值。 通常我像這樣做我的jQuery AJAX:
$.ajax({
type: "POST",
url: "RegisterUserAction.php",
data: {
userName: usr
},
dataType: "json",
success: function(data) {
if(data.success == 'true'){
//do something
} else {
//do something
}
}
});
然后在PHP頁面上,我發送json編碼的回調,如下所示:
if (mysql_num_rows($sql_check)>0) {
//do something
$return_arr["success"] = 'true';
} else {
//do something
$return_arr["success"] = 'false';
}
echo json_encode($return_arr);
在我的示例中,嘗試修改AJAX以利用data方法和dataType,看看是否有幫助。 看一下Firebug / Dev工具控制台。 價值超過了嗎? 如果是這樣,則PHP方面可能有問題。 讓我知道它的運行方式,如果它是PHP部分,我們可以進一步研究(盡管現在對我來說還不錯)。
我認為這行:
data: "userName="+ usr,
根據jQuery規范,數據應以這種格式傳遞
{ "userName": usr}
因此,您可能根本不發送任何POST數據,也不會輸入
if(isSet($_POST['userName'])){
以及發送的消息為空(不是“ OK”)的原因,這就是為什么您回答"the username in use"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.