2011-01-17 6 views
0

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

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(); 
    } 
+0

Почему это '.val()'? Это объект jQuery? Если нет, то это должно быть '.value'. Даже если это несколько соответствует первому, я просто хочу уточнить. –

+0

Извините, я не упоминал об этом, да, это объект jQuery. –

+6

вы используете '.val()' и '.addClass()' в своем коде - они очень похожи на функции jQuery - почему бы вам не использовать jQuery ajax? –

ответ

0

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

var xmlhttp; 
+0

Пробовал это сейчас, не работает. –

+0

@Or W Я думаю, что у меня это получилось :) –

+0

Это помогает, хотя и решает проблему. Если я прокомментирую вызов функции checkUsername(), функция checkEmail() будет работать. В противном случае он не работает. –

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(); 
} 
Смежные вопросы