使用domready进行AJAX调用

时间:2010-02-14 15:12:31

标签: javascript ajax

在尝试使用JQuery访问文档之前,有没有办法知道元素在文档上?

代码段:

var s = new AjaxCall(someurl);

s.oncomplete = function(response) {
    var container = $('container_id');
    container.innerHTML = response;
    var ul = $('some_id'); }

响应是Ajax调用返回的一些HTML。

此响应更新了div的内容,然后我访问了由innerHTML(代码中的ul)创建的元素。

如果响应很大,我相信当我尝试访问它们时,有些元素会被渲染。 domready是否适用于AJAX调用,这可以解决我的问题吗?

2 个答案:

答案 0 :(得分:2)

您好像忘记使用#,因为它应该是$('#some_id');,而不是$('some_id');。我建议只使用document.getElmenetById。它读取得更清晰,并且比基于上下文的ID匹配更有效。

var some_id = document.getElmenetById("some_id");

关于元素“无法使用”的问题,请不要担心。 innerHTML setter执行同步操作。如果从中解析了具有匹配ID的标记,则在设置innerHTML后,相应的元素将立即可用。

答案 1 :(得分:0)

如果您使用的是jQuery,请求的success函数将是:

$.ajax({
  url: "test.html",
  cache: false,
  success: function(resp){
    var ul = $("#containerID").html(resp).find("#ElementInRespID");
    //do something with ul
  }
});

这会将结果放入容器中,在那里找到你想要的元素,并为其设置ul变量。