【问题标题】:jquery getElementById on a ajax datajquery getElementById 在 ajax 数据上
【发布时间】:2011-04-11 08:46:20
【问题描述】:

我在 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;
                       });
        }
    }

【问题讨论】:

  • 您是否遇到 data.getElementById() 错误?
  • 更改,data.getElementById('username').innerHTML;document.getElementById('username').innerHTML = data; 阅读@Amber 的评论!

标签: php jquery ajax xmlhttprequest clean-urls


【解决方案1】:

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

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

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

【讨论】:

  • data 不是 always 字符串,是吗?这取决于响应的类型以及您是否设置了dataType: api.jquery.com/jQuery.ajax 如果响应是 HTML,它将是一个字符串,而 JSON 绝对是这种响应的方式。
  • 但无论哪种方式,它都是字符串或 json 数据,但仍然不在 DOM 中,也不会有 getElementById()
  • & Marc:我现在不能方便地尝试,但是如果您检索 XML(或设置dataType),您不会得到包含 XML 文档的 DOMDocument 吗? (使用 JSBin 的尝试失败了,但这似乎是文档所建议的。)同样,这是一个侧面,完全同意 Amber 的观点,即 JSON 是最好的方法。
【解决方案2】:

试试这个:

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

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

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

【讨论】:

    【解决方案3】:

    你必须这样做:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多