[PHP / AJAX]:入力されたテキストに従ってメッセージの色を変更します

StackOverflow https://stackoverflow.com/questions/1612209

  •  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;
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top