Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
jQuery检查远程页面是否已加载到while循环中_Jquery_Ajax - Fatal编程技术网

jQuery检查远程页面是否已加载到while循环中

jQuery检查远程页面是否已加载到while循环中,jquery,ajax,Jquery,Ajax,我们正在一个网页中嵌入“可视化”。嵌入的对象是从同一服务器上的另一个URL加载的(没有CORS问题),但是一旦用户加载了主页,辅助资源需要一段时间(1-5秒) 使用async:true和async:false生成相同的结果: Test: 0 z.js:34 Test: 1 z.js:34 Test: 2 z.js:34 Test: 3 z.js:34 Test: 4 z.js:34 Test: 5 z.js:34 Test: 6 z.js:34 Test: 7 z.js:34 Test: 8 z

我们正在一个网页中嵌入“可视化”。嵌入的对象是从同一服务器上的另一个URL加载的(没有CORS问题),但是一旦用户加载了主页,辅助资源需要一段时间(1-5秒)

使用
async:true
async:false
生成相同的结果:

Test: 0 z.js:34
Test: 1 z.js:34
Test: 2 z.js:34
Test: 3 z.js:34
Test: 4 z.js:34
Test: 5 z.js:34
Test: 6 z.js:34
Test: 7 z.js:34
Test: 8 z.js:34
Test: 9 z.js:34
Test: 10 z.js:34
undefined
(10) Sleeping for a second 

我尝试过在
成功
/
错误
回调中设置
加载页面
变量,这两种方法都不起作用。

如何在间隔内创建一个函数,不断检查它是否加载了

var interval = setInterval( function () {

    if (document.all["main"].readyState == 4) {

        clearInterval(interval);

        alert("Initialization is ready.");
    }

}, 100);
setTimeout(…)
不会导致程序“睡眠”——它会导致程序在给定的时间间隔后执行某些操作

因此,您的
while
循环无停顿地运行11次,每次创建一个新的1s计时器,将“睡眠一秒钟”输出到您的控制台

您可以完全删除循环,只需添加代码以隐藏微调器而不是此行:

loaded_page = true;

这听起来很有希望。我将测试该实现,谢谢。不知道
set/clearInteveral
测试并得到了一个有效的实现,这完美地解决了它!好的,所以我应该将ajax查询放在setTimeout中,而不是单独进行。您不需要使用
setTimeout
。加载页面后,
ajax
done
函数将运行。问题是在加载页面之前,我们可能会遇到各种错误,包括代理错误、超时和404。您可以在
ajax
调用中测试这些错误,但看起来@BA_Webimax为您提供了一个很好的解决方案。
var interval = setInterval( function () {

    if (document.all["main"].readyState == 4) {

        clearInterval(interval);

        alert("Initialization is ready.");
    }

}, 100);
loaded_page = true;