2

我在 javascript 中有一个函数,它首先检查用户名是否是所需的长度,然后将用户名发送到测试页面,如果测试成功,将会有一个 <span id="username">true</span> else <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;
                       });
        }
    }
4

3 回答 3

4

返回值是一个字符串,而data不是 DOMDocument - 因此它没有 getElementById 成员函数。

一个更好的主意是让您的测试页面返回 JSON,然后对其进行解析。

如果您无法更改执行测试/返回的页面,那么您需要找到另一种方法来解析满足您目的的返回字符串。

于 2010-09-12T16:09:39.563 回答
2

尝试这个:

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

或者这个,取决于返回的 HTML 的结构:

   function(data){
       alert( "Data Loaded: " + $(data).filter('#username').html() );
   });
于 2010-09-12T16:14:05.700 回答
1

你必须这样做:

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());
      }
    );
  }
}
于 2010-09-12T16:13:43.763 回答