Javascript AJAX функция не работает должным образом - PullRequest
0 голосов
/ 18 января 2011

У меня есть функция, которая отправляет запрос GET в скрипт php и проверяет, возвращал ли скрипт какой-либо вывод. Это прекрасно работает, но когда я пытаюсь добавить еще одну функцию, которая проверяет что-то похожее, оба они терпят неудачу. Чего мне не хватает?

    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 голосов
/ 18 января 2011

Попробуйте следующее:

   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();
}
0 голосов
/ 18 января 2011

В обеих функциях пусть первая строка будет:

var xmlhttp;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...