jQuery getElementById для данных AJAX - PullRequest
       19

jQuery getElementById для данных AJAX

2 голосов
/ 12 сентября 2010

Я получил функцию в javascript, которая сначала проверяет, является ли имя пользователя требуемой длины, а затем отправляет имя пользователя на страницу для проверки, если проверка прошла успешно, будет <span id="username">true</span> иначе <span id="username">false</span>

Я получаю сообщение об ошибке, что getElementById не существует в возвращаемых данных

  function checkuser(user, wd,id, sub)
    {
        if(user.length < 7)
        {
            document.getElementById(id).innerHTML = "Your username is too short. It must be longer than 6 charaters";
            document.getElementById(sub).disabled = true;
            return false;
        } else {
            $.post(wd + "register/checkuser/" + user,
                       function(data){
                         alert("Data Loaded: " + data.getElementById('username').innerHTML;
                       });
        }
    }

Ответы [ 3 ]

4 голосов
/ 12 сентября 2010

Возвращаемое значение data является строкой, а не DOMDocument, поэтому у него нет функции-члена getElementById.

Лучше было бы сделать так, чтобы тестовая страница возвращала JSON, а анализчто.

Если вы не можете изменить страницу, которая выполняет тестирование / возврат, вам нужно будет найти другой способ анализа возвращаемой строки, которая соответствует вашим целям.

2 голосов
/ 12 сентября 2010

Попробуйте это:

   function(data){
       alert( "Data Loaded: " + $('#username', data).html() );
   });

Или это, в зависимости от структуры возвращаемого HTML:

   function(data){
       alert( "Data Loaded: " + $(data).filter('#username').html() );
   });
1 голос
/ 12 сентября 2010

Вы должны сделать это:

function checkuser(user, wd, id, sub) {
  if(user.length < 7) {
    $("#"+id).html("Your username is too short. It must be longer than 6 characters");
    $("#"+sub).attr("disabled", true);
    return false;
  }
  else {
    $.post(
      wd + "register/checkuser/" + user,
      function(data){
        alert("Data Loaded: " + $(data).find("#username").html());
      }
    );
  }
}
...