ajax.js
var xmlHttp;function CreateXMLHttpRequest(){
if(window.XMLHttpRequest){
//Mozilla 浏览器
xmlHttp=new XMLHttpRequest();
}else if(window.ActiveXObject){
//IE浏览器
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHttp");
}
catch(e){
try{
cmlHttp=new ActiveXObject("Microsoft.XMLHttp");
}catch(e){}
}
}
if(xmlHttp==null){
alert("不能创建XMLHttpRequest对象");
return false;
}
}
function sendAsynchronRequest(url,parameter,callback){
//创建一个XMLHttpRequest对象
createXMLHttpRequest();
if(parameter==null){
//设置XMLHttpRequest对象的属性参数
//设置onreadystatechange
//保存一个回调函数指针
xmlHttp.onreadystatechange=callback;
//设置对服务器调用的参数
xmlHttp.open("GET",url,true);
//调用send方法就会向服务器端发起一个异步请求
//去访问由URL指定的资源
xmlHttp.sned(null);
//服务器断处理完请求后开始返回response
//并由XMLHttpRequest对象开始接收
}else{
xmlHttp.onreadystatechange=callback;
xmlHttp.open("POST",url,true);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
//参数放置在请求体
xmlHttp.send(parameter);
}
}check.js
function checkname(){
var url="check.php";
var username=document.getElementById("username").value;
var checkusername=document.getElementById("checkusername");
var parameter="username="+username+"&action=username";
checkusername.innerHTML="验证中....";
sendAsynchronRequest(url,parameter,checknameback);
}
function ckecknameback(){
varresult=xmlHttp.responceText;
var checkusername=document.getElementById("checkusername");
checkusername.innerHTML=result;
}

解决方案 »

  1.   

    <?php session_start();
     require_once ("class/db.class.php");
     @$username=$_REQUEST['username'];
     @$action=$_GET['action'];
     switch($action){
      case "username":
      if(empty($username)){
      echo "<font color='red'>用户名不能为空!</font>";
      $_SESSION['username']=0;
      }else{
    $db=new db;
    $db->conn();
    $sel_info=$db->sel_info($username);
    if(empty($sel_info)){
    if(preg_match("/^[^0-9]/",$username)){
    if(preg_match("/[',:;*~`!#$%^&+=)(<>{}]|\]|\[|\/|\\\|\"|\|/",$username)){
    echo "<font color='red'>包含非法字符!</font>";
    $_SESSION['username']=0;
    }else{
    echo "<font color='green'>用户名有效!</font>";
    $_SESSION['username']=1;
    }
    }else{
    echo "<font color='red'>不能以数字开头!</font>";
    $_SESSION['username']=0;
    } }else{
    echo "<font color='red'>用户名已被占用!</font>";
    $_SESSION['username']=0;
    }
      }
      break;
    }
    这是check.php
    <div id="username" class="style2"><font color=red>*</font>用 户 名:<input type="text" name="username" id="username" class="ab" onblur="checkname();">
    <span name="checkusername" id="checkusername"></span>
    </div>
    这个是我的注册页面用户名那栏,我输入字符之后只会显示验证中....,我想问是不是ajax的异步请求没有成功啊,各位高手救救我啊
      

  2.   

    js输入错误很多,不可思议1、checknameback函数a,varresult=xmlHttp.responceText; =》 varresult=xmlHttp.responseText;b,本身函数命名不一致调用时ckeck2、cmlHttp=new ActiveXObject("Microsoft.XMLHttp");
    要改成xmlHttp这几个改了估计差不多了
      

  3.   

    xmlHttp.onreadystatechange=callback;函数callback在哪里????
      

  4.   

    1、b本身函数命名不一致调用时ckeck
    这个怎么改啊,先说本人刚接触ajax,几乎是什么也不会,如果可以的话尽量详细点,呵呵
      

  5.   

    那个,弱弱的问一句,callback怎么写啊
      

  6.   

    找到  sendAsynchronRequest(url,parameter,checknameback);还有function ckecknameback(){注意,拼写要一样,根据意思,还是把function ckecknameback()改成function checknameback()  吧
      

  7.   

    我谷歌浏览器测试成功,编码utf-8那个check.php文件,我直接输出,没有去连接数据库,<div id="username" class="style2"><font color=red>*</font>用 户 名:<input type="text" name="username" id="username" class="ab" onblur="checkname();">
    <span name="checkusername" id="checkusername"></span>
    </div>
    <script>var xmlHttp;function CreateXMLHttpRequest(){
    if(window.XMLHttpRequest){
    //Mozilla 浏览器
    xmlHttp=new XMLHttpRequest();
    }else if(window.ActiveXObject){
    //IE浏览器
    try{
    xmlHttp=new ActiveXObject("Msxml2.XMLHttp");
    }
    catch(e){
    try{
    xmlHttp=new ActiveXObject("Microsoft.XMLHttp");
    }catch(e){}
    }
    }
    if(xmlHttp==null){
    alert("不能创建XMLHttpRequest对象");
    return false;
    }
    }function sendAsynchronRequest(url,parameter,callback){
    //创建一个XMLHttpRequest对象
    CreateXMLHttpRequest();
    if(parameter==null){
    //设置XMLHttpRequest对象的属性参数
    //设置onreadystatechange
    //保存一个回调函数指针
    xmlHttp.onreadystatechange=callback;
    //设置对服务器调用的参数
    xmlHttp.open("GET",url,true);
    //调用send方法就会向服务器端发起一个异步请求
    //去访问由URL指定的资源
    xmlHttp.sned(null);
    //服务器断处理完请求后开始返回response
    //并由XMLHttpRequest对象开始接收
    }else{
    xmlHttp.onreadystatechange=callback;
    xmlHttp.open("POST",url,true);
    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
    //参数放置在请求体
    xmlHttp.send(parameter);
    }
    }function checkname(){
    var url="check.php";
    var username=document.getElementById("username").value;
    var checkusername=document.getElementById("checkusername");
    var parameter="username="+username+"&action=username";
    checkusername.innerHTML="验证中....";
    sendAsynchronRequest(url,parameter,checknameback);
    }
    function checknameback(){
    var result=xmlHttp.responseText;
    var checkusername=document.getElementById("checkusername");
    checkusername.innerHTML=result;
    }
    </script>
      

  8.   

    xmlHttp.onreadystatechange=callback;
    这是一个回调函数,找你代码里的意思应该是:
    xmlHttp.onreadystatechange=function (){
    //这里应该做一个状态判断
     if(xmlHttp.status==200)
      var result=xmlHttp.responceText;
      var checkusername=document.getElementById("checkusername");
      checkusername.innerHTML=result;
     }
    }
      

  9.   

    我在check.php里写了一句输出语句,username的值没获取到,输出undefined,后面的action获取的值为username是对的,为什么username的值没有呢?可以给解释下么?
      

  10.   

    我现在不能测试,我怀疑是编码问题建议   所有文件以utf-8格式保存check.php先别去连数据库,就打印一句比如echo "<font color='red'>这只是测试!</font>";不要其他内容,再试试有“ undefined”,说明js代码执行了
      

  11.   

    我所有文件都是utf8格式保存的,我试了,不去连接数据库,然后打印username和action,action能获取到,username就获取不到
      

  12.   

    @$username=$_REQUEST['username'];
     @$action=$_GET['action'];你ajax 是POST方式提交的,$_GET 替换成$_REQUEST试试