javascript - ajax 调用后 getElementById 不起作用

标签 javascript html ajax

<分区>

我正在使用 javascript/ajax 开发网络应用程序。

问题是在我的应用程序(一种社交网络)中我需要读取有关用户的信息(数据库中的帖子)。为此,我使用 PHP 专用服务与数据库进行交互。该服务返回主页的 HTML 格式。

现在,我将此服务与 AJAX 调用结合使用以获取 HTML 并将其注入(inject)到我的页面中。问题是,当我尝试使用 javascript 从注入(inject)的 HTML 中获取元素时:

document.getElementById('commentsArea_xxx').innerHTML=xmlhttp.responseText;

getElementById 返回 null

我认为问题是在 AJAX 调用之后浏览器没有更新文档,因此文档中不存在“commentsArea_xxx”!

我该如何解决这个问题?

这是我的代码:

function moreComments(id){
        var footerIcon = document.getElementById('footer');
            footerIcon.innerHTML="<div style='text-align:center;'><img src='images/home_selected.png' onClick='loadHome()'/><img id='cameraButton' src='images/camera.png'/><img src='images/list.png' onClick='loadMyVideo()'/></div>";
            pageOld=pageCurrent;
            pageCurrent=0;
            document.getElementById("ajaxContent").innerHTML="<div id='wrapper' style='top:95px;'><div id='scroller'><ul id='thelist'><li style='text-align:center;'><img src='images/loading.gif' style='text-align:center;'></li></ul></div></div>";
            var xmlhttp;
            if (window.XMLHttpRequest){
                xmlhttp=new XMLHttpRequest();
            }
            else{
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function(){
                if (xmlhttp.readyState==4 && xmlhttp.status==200){
                    document.getElementById("commentsArea_"+id).innerHTML=xmlhttp.responseText;
                    loaded();
                    me();
                    setTimeout(function () {myScroll.refresh();}, 0);
                }
            }
            xmlhttp.open("GET","home_more.php?id="+id,true);
            xmlhttp.send();
    } 

最佳答案

应该这样做:

$('body').ajaxComplete(function () {
        document.getElementById('commentsArea_xxx').innerHTML=xmlhttp.responseText;
 });

这将在每次 ajax 调用后执行。

更新: 如果您尚未将元素添加到 DOM,请查看@T.J Crowder 的回答。

关于javascript - ajax 调用后 getElementById 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13539749/

相关文章:

html - 格式化 HTML 列表

javascript - 如何使用输入框和下拉菜单过滤数据

javascript - 单击时将内容附加到 div,无需重新加载页面

javascript - PHP Ajax 返回 HTML 两次

html - 为什么插入文本时红色方 block 会下降?

php - 基于可变深度数据生成嵌套 UL

javascript - 将 ajax 对象响应推送到数组中

javascript - jQuery 在 $.get 数据完成后做作业

javascript - 无法设置未定义的属性 - 模态库 - 可能的范围问题?

javascript - 在播放音乐时浏览页面