[PHP / AJAX]: girilen metne göre mesajın rengini değiştirme

3 Cevap php

Benim web sitesi ana sayfasında, ben yeni bir kullanıcı kayıt formu var. Bu alan "Kullanıcı Adı" içeriyor. Kullanıcı adını girer ve odak başka bir alana işaret olduğunda, bir AJAX kod girilen kullanıcı adı ile herhangi bir kullanıcı zaten var olup olmadığını denetler yürütülür.

Ben kullanıyorum AJAX kodu şudur:

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 = ''; 
    }
}

Yukarıdaki kod tarafından çağrılan dosya "AJAX.php", bu gibi:

<?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; 
} 
?>

Benim kayıt formu, sadece kullanıcı adı giriş kutusunun altında, ben mesajları göstermek nerede bir bölümü tanımlamak istiyorum:

Bu isimde kullanıcı var, veya

Adı mevcuttur.

Benim ana sayfasında, ben aşağıdaki kodu kullanıyorum:

<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>";
  }
?>

Ana sayfa üzerinde kod ve ben verdi üstüne ilk kod bloğu (JavaScript) oluşur.

Bu kod çalışmıyor. Ve ben neden ben PHP bloğunda mesajlar dahil ettik duyuyorum sanırım. Sunucu tarafı olmak, mesajları gösteren değil.

Bana bu sorunu nasıl ele iletebilirsiniz. AJAX çağrıları JavaScript kodunu değiştirmek veya PHP şey dahil olsun.

Ayrıca, aslında ne istiyorum yeşil veya kırmızı renkte mesajları göstermek için olduğunu lütfen unutmayın. Kullanıcı adı varsa, kırmızı renkte sonra başka yeşil.

3 Cevap

JQuery kullanarak bunu yapmak ve PHP sayfası veya benzer (true için false, 1 için 0) bir kod döndürür olurdu. Daha sonra tüm javascript, döndürülen sonuç bağlı jQuery'nin addClass () yöntemini kullanabilirsiniz.

Nasıl ajax.php önceden biçimlendirilmiş HTML biraz geri olan ve bir tutucu div / span bunu sopa, yanıtı işlemek kurdum statechange_username işlevini kullanmaya ne dersiniz?

Bu arada, neden bir oturum değişkeni ayarlıyorsunuz?

Senin gibi bir şey, statechange_username işlevini eksik sanırım

function statechange_username() 
{ 
    if (http.readyState==4)
    { 
    	document.getElementById(\"username_eixsts\").innerHTML=http.responseText;
    }
}