Javascript AJAX功能无法正常工作

时间:2011-01-17 22:45:21

标签: javascript ajax xmlhttprequest

我有一个向PHP脚本发送GET请求的函数,并检查脚本是否返回任何输出。它工作得很好,但是当我尝试添加另一个检查类似内容的函数时,它们都会失败。我错过了什么?

    function checkUsername(usr,n) {
        var user = usr.val(), xmlhttp;

        //var str = document.getElementById('email').value;
        if (window.XMLHttpRequest)
          {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
          }
        else
          {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
            //document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
                if (xmlhttp.responseText != "") {
                    usr.addClass( "ui-state-error" );
                    updateTips( n );
                    return false;
                }
                else {
                    return true;
                }
            }
          }
        xmlhttp.open("GET","ajaxValidate.php?type=user&q="+user,true);
        xmlhttp.send();

    }

以上工作完美,在添加此功能时,它们都不起作用:

    function checkEmail(em,n) {
        var email = em.val(), xmlhttp;

        //var str = document.getElementById('email').value;
        if (window.XMLHttpRequest)
          {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
          }
        else
          {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
            //document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
                if (xmlhttp.responseText != "") {
                    em.addClass( "ui-state-error" );
                    updateTips( n );
                    return false;
                }
                else {
                    return true;
                }
            }
          }
        xmlhttp.open("GET","ajaxValidate.php?type=email&q="+email,true);
        xmlhttp.send();
    }

2 个答案:

答案 0 :(得分:0)

在这两个函数中,让第一行为:

var xmlhttp;

答案 1 :(得分:0)

请尝试以下操作:

   function createRequestObject() {
        var xmlhttp=null;
        if (window.XMLHttpRequest) {
          xmlhttp=new XMLHttpRequest();
        } else {
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        return xmlhttp;
    }

function checkUsername(usr,n) {
    var user = usr.val();
    var xmlhttp = createRequestObject();
    xmlhttp.onreadystatechange = function() {
      if (xmlhttp.readyState==4 && xmlhttp.status==200) {
         if (xmlhttp.responseText != "") {
            usr.addClass( "ui-state-error" );
            updateTips( n );
            return false;
         } else {
            return true;
         }
      }
    }
    xmlhttp.open("GET","ajaxValidate.php?type=user&q="+user,true);
    xmlhttp.send();
}

function checkEmail(em,n) {
    var email = em.val();
    var xmlhttp = createRequestObject();
    xmlhttp.onreadystatechange = function() {
      if (xmlhttp.readyState==4 && xmlhttp.status==200) {
          if (xmlhttp.responseText != "") {
            em.addClass( "ui-state-error" );
            updateTips( n );
            return false;
          } else {
            return true;
          }
       }
    }
    xmlhttp.open("GET","ajaxValidate.php?type=email&q="+email,true);
    xmlhttp.send();
}