在我的网站主页上,我有一个新的用户注册表。它包含一个字段<!> quot; User Name <!> quot;。当用户输入用户名并将焦点指向另一个字段时,将执行AJAX代码,检查是否已存在输入用户名的用户。

我正在使用的AJAX代码是:

function toggle_username(userid) { 
    if (window.XMLHttpRequest) { 
        http = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
        http = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    handle = document.getElementById(userid); 
    var url = 'ajax.php?'; 
    if(handle.value.length > 0) { 
        var fullurl = url + 'do=check_username_exists&username=' + encodeURIComponent(handle.value); 
        http.open("GET", fullurl, true); 
        http.send(null); 
        http.onreadystatechange = statechange_username; 
    }
    else
    { 
        document.getElementById('username_exists').innerHTML = ''; 
    }
}

文件<!> quot; AJAX.PHP <!> quot;由上面的代码调用,就像这样:

<?php 
mysql_connect ('localhost', 'MyServer', 'user1'); 
mysql_select_db('globaldb'); 

$do = $_GET['do']; 
switch($do) { 
    case 'check_username_exists': 
        if(get_magic_quotes_gpc()) { 
            $username = $_GET['username']; 
        }else{ 
            $username = addslashes($_GET['username']); 
        } 
        $count = mysql_num_rows(mysql_query("SELECT * FROM `student_login` WHERE `username`='".$username."'")); 
        header('Content-Type: text/xml'); 
        header('Pragma: no-cache'); 
        echo '<?xml version="1.0" encoding="UTF-8"?>'; 
        echo '<result>'; 
        if($count > 0) {
            $_SESSION['UserExists'] = "true";

        }else{ 
            $_SESSION['UserExists'] = "false";
        } 
        $_SESSION['UserExists'] = "false";
        echo '</result>'; 
    break; 
    default: 
        echo 'Error, invalid action'; 
    break; 
} 
?>

在我的注册表单中,在用户名输入框的下方,我想定义一个部分,我可以在其中显示消息:

具有此名称的用户存在,或

用户名可用。

在我的主页中,我使用以下代码:

<input name="username" type="text" id="username"  onchange="toggle_username('username')" style="width:150px;" maxlength="40" size="22" >

<?PHP

   if ($_SESSION['UserExists'] == "true")
   {
    echo "<div id='username_exists' style='font-size: 11px;font-weight: bold;color:red'>User with this name unavailable.</div>";
   }
  else
  {
        echo "<div id='username_exists' style='font-size: 11px;font-weight: bold;color:darkgreen'> User with this name is available </div>";
  }
?>

主页包含上面的代码和我给出的第一个代码块(JavaScript)。

此代码无效。我想原因是我已经将消息包含在PHP块中。作为服务器端,它没有显示消息。

请告诉我如何处理此问题。是否修改调用AJAX的JavaScript代码或在PHP中包含某些内容。

请注意,实际上我想要的是以绿色或红色显示消息。如果用户名可用,则绿色为红色。

没有正确的解决方案

其他提示

我使用jQuery执行此操作并让PHP页面返回代码(0表示false,1表示true)或类似代码。然后,您可以使用jQuery的addClass()方法,具体取决于返回的结果,所有这些都在javascript中。

如果让ajax.php返回一些预先格式化的HTML并使用statechange_username函数,你已设置它来处理响应,将其粘贴在占位符div / span中?

顺便问一下,为什么要设置会话变量?

我猜你错过了statechange_username函数,比如

function statechange_username() 
{ 
    if (http.readyState==4)
    { 
        document.getElementById(\"username_eixsts\").innerHTML=http.responseText;
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top