-1

私はこのajax関数を持っています:

function getpage(page,div){
var url = page+"&sid="+Math.random();
    var xhr; 
    try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   
    }
    catch (e) 
    {
        try {   xhr = new ActiveXObject('Microsoft.XMLHTTP');    
        }
        catch (e2) 
        {
          try {  xhr = new XMLHttpRequest();     
          }
          catch (e3) {  
          xhr = false;   
          }
        }
     }

    xhr.onreadystatechange  = function()
    { 
         if(xhr.readyState  == 4){
              if(xhr.status  == 200)
                document.getElementById(div).style.display= "block";
                document.getElementById(div).innerHTML = xhr.responseText; 
         }else{
                document.getElementById(div).innerHTML = '<img src="./pic/load.gif" />';
         }
    }; 

   xhr.open( "GET", url,  true); 
   xhr.send(null); 
}

そして、私はsingupフォームを持っています(賢いテンプレートで設計されています):

<div><input style="width:300px" class="inp" type="text" onkeyup="getpage('./ajax.php?action=regnewuser&usern={$uname}','register')" name="User_name"  placeholder="username" required /></div><div class="hr" id="register"></div>

そして、私はこのajax.phpコードを持っています:

if($act == 'regnewuser'){
            $usern   = protect($_GET['usern']);

        $sql = $db->query("SELECT USER_NAME FROM ".$pre."USERS");
            while($row = $db->record()){
            $dbuname = strtolower($row['USER_NAME']);
            $uname2  = strtolower($usern);
            }
        if(empty($usern)){
            echo '<div class="rd">please fill the box !!</div>';
        }elseif(strlen($usern) < 4){
            echo '<div class="rd">too short !!</div>';
        }elseif(strlen($usern) > 50){
            echo '<div class="rd">too tall !!</div>';
        }elseif($dbuname == $uname2){
            echo '<div class="rd">not available !!</div>';
        }
    }

しかし、結果は常に「ボックスに記入してください」です。
テンプレートフォームの問題だと思います!
正しい結果を得るには、テンプレートに何をすべきですか??

4

1 に答える 1

0

あなたのコードで何を{$uname}するつもりですか?onkeyup

私にはPHPコードのように見えます。

ユーザー名を URL に追加するには、JavaScript を使用する必要があります。コードの要素にid属性を設定して URL を生成する場合は、次のようになります。inputid

var url = "/ajax.php?action=regnewuser&usern=" + document.getElementById("username").value();

これを別の関数で実行し、生成された URL を関数に渡すことをお勧めしますgetpage

つまりonkeyup、コードを添付するのに適切なイベントかどうかはわかりません。テキスト ボックスでキーが押されるたびにユーザー レコードを作成しますか?

たとえば、ユーザーが「test」と入力した場合、4 つのレコードを作成しますか? ('t','te','tes','test')

ユーザーがテキスト ボックスへの入力を完了し、満足したらクリックするボタンを追加することをお勧めします (コードをonclickボタンのイベントに添付します)。

于 2013-01-30T15:59:00.043 に答える