Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jQuery加载命令之后,有没有办法强制等待直到html被呈现到div中?_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 在jQuery加载命令之后,有没有办法强制等待直到html被呈现到div中?

Javascript 在jQuery加载命令之后,有没有办法强制等待直到html被呈现到div中?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我(基本上)有这个代码- <script type="text/javascript" language="javascript"> $(document).ready(function() { $("#loadDiv").load("mypage.html", function(){ alert($("#someText").text()) }); }); </script> <div id="loadDiv"></di

我(基本上)有这个代码-

<script type="text/javascript" language="javascript">
    $(document).ready(function() {
        $("#loadDiv").load("mypage.html", function(){ alert($("#someText").text()) });
    });
</script>
<div id="loadDiv"></div>

$(文档).ready(函数(){
$(“#loadDiv”).load(“mypage.html”,function(){alert($(“#someText”).text())});
});
但是,警报将显示“undefined”,因为html尚未呈现到div中

我见过这个问题,杰克的回答对我来说是最好的。在我的实际页面上,我有八个这样的页面,在呈现html之前,它们中的一些仍然在运行,只需两秒钟的延迟


除了将延迟增加到愚蠢的时间之外,还有谁有更好的建议吗?

您应该能够在回调中使用
setTimeout()
来包装代码,超时时间为
0
(浏览器应该限制在
4
微秒,但并非所有浏览器都这样做)

这会将代码推送到事件队列中,使浏览器有机会在执行代码之前进行渲染。

您可以将html设置为空(如果加载请求时div中没有其他html元素)。 成功(完成事件)后,加载内容(现在我不知道响应是html还是文本,我已经按照您的代码完成了示例)。 如果请求失败,还可以设置预定义文本

查看此链接了解更多信息,但这应该是可行的

$("#loadDiv").load("mypage.html", function(response, status, xhr) {
  if (status == "success") {
    $("#loadDiv").html("");
  }
  else if(status == "complete"){
          $("#loadDiv").text();
   }
});
根据,在调用函数之前,
load
方法已经在等待将内容放入元素中:

如果提供了“完整”回调,则在 已执行后处理和HTML插入。”

我已经对此进行了测试,当回调函数运行时,它确实在元素中找到了加载的内容


如果它在您的代码中不起作用,则表示您正在尝试执行与问题中显示的内容不同的操作。

我曾尝试过延迟250+的setTimeout,但不断出现错误(我在实际代码中加载了一个函数),现在又尝试了一次,效果非常好。。。。不知道我以前做错了什么,你是对的。我在调用另一个函数;当我最初收到错误时,我已经失去了我正在做的事情,但我认为我正在做类似
$(“#loadDiv”).load(“mypage.html”,myFunction())
而不是
$(“#loadDiv”).load(“mypage.html”,function(){myFunction()})