[PHP / AJAX]:入力されたテキストに従ってメッセージの色を変更します
-
05-07-2019 - |
質問
私のウェブサイトのホームページには、新しいユーザー登録フォームがあります。フィールド<!> 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;
}
}