문제

내 웹 사이트 홈페이지에는 새로운 사용자 등록 양식이 있습니다. 필드 "사용자 이름"이 포함되어 있습니다. 사용자가 사용자 이름을 입력하고 초점이 다른 필드를 가리키면 입력 한 사용자 이름이있는 사용자가 이미 존재하는지 여부를 확인하는 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 = ''; 
    }
}

위 코드에서 호출하는 "ajax.php"파일은 다음과 같습니다.

<?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를 호출하거나 PHP에 무언가를 포함시키는 JavaScript 코드를 수정할지 여부.

또한 실제로 원하는 것은 메시지를 녹색 또는 붉은 색으로 보여주는 것입니다. 사용자 이름을 사용할 수있는 경우 녹색은 붉은 색으로 녹색입니다.

올바른 솔루션이 없습니다

다른 팁

jQuery를 사용 하여이 작업을 수행하고 PHP 페이지에 코드를 반환합니다 (0, False의 경우 1, True의 경우 1) 또는 이와 유사합니다. 그런 다음 리턴 된 결과에 따라 javaScript의 jQuery의 addClass () 메소드를 사용할 수 있습니다.

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