如何用ajax编程php注册页面?

如何用ajax编程php注册页面?,php,ajax,smarty,Php,Ajax,Smarty,我有一个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');

我有一个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); 
}
函数getpage(第页,div){
var url=page+“&sid=“+Math.random();
var-xhr;
试试{xhr=newActiveXObject('Msxml2.XMLHTTP');
}
捕获(e)
{
试试{xhr=newActiveXObject('Microsoft.XMLHTTP');
}
渔获物(e2)
{
试试{xhr=newXMLHttpRequest();
}
渔获物(e3){
xhr=假;
}
}
}
xhr.onreadystatechange=函数()
{ 
if(xhr.readyState==4){
如果(xhr.status==200)
document.getElementById(div.style.display=“block”;
document.getElementById(div.innerHTML=xhr.responseText;
}否则{
document.getElementById(div.innerHTML='';
}
}; 
xhr.open(“GET”,url,true);
xhr.send(空);
}
我还有一张单张表格(用smarty模板设计):


我有一个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>';
        }
    }
if($act==“regnewuser”){
$usern=protect($_GET['usern']);
$sql=$db->query(“从“$pre.”USERS”中选择用户名);
而($row=$db->record()){
$dbuname=strtolower($row['USER_NAME']);
$uname2=strtolower($usern);
}
if(空($usern)){
echo“请把盒子装满!!”;
}elseif(strlen($usern)<4){
回声“太短!!”;
}elseif(strlen($usern)>50){
回声“太高了!!”;
}elseif($dbuname==uname2){
回显“不可用!!”;
}
}
但结果总是“请填好盒子”;
我认为模板表单中的问题!

为了得到正确的结果,我应该在模板中做什么?

onkeyup
代码中,我打算做什么

看起来像PHP代码

您需要使用JavaScript将用户名附加到URL。如果要在
id
input
元素上设置
id
属性,则生成URL的代码为:

var url = "/ajax.php?action=regnewuser&usern=" + document.getElementById("username").value();
我建议在单独的函数中执行此操作,并将生成的URL传递给
getpage
函数

也就是说,我不确定
onkeyup
是否是将代码附加到的正确事件。是否确实要在每次按下文本框中的键时创建用户记录

例如,如果用户键入“test”,您是否希望创建4条记录?(‘t’、‘te’、‘tes’、‘test’)


我建议添加一个按钮,让用户在完成填充文本框并感到高兴后单击(将代码附加到按钮的
onclick
事件)

$uname=protect($\u POST['User\u name']);我想创建代码,如果我注册的用户名是错误的(短或高或注册之前),给我旁边的输入框,我输入了错误的用户名没有按提交按钮消息
var url = "/ajax.php?action=regnewuser&usern=" + document.getElementById("username").value();