Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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
Ajax 当URL不同时,jQuery异步调用仅“并行”_Ajax_Jquery_Asynchronous - Fatal编程技术网

Ajax 当URL不同时,jQuery异步调用仅“并行”

Ajax 当URL不同时,jQuery异步调用仅“并行”,ajax,jquery,asynchronous,Ajax,Jquery,Asynchronous,昨晚我在玩jQuery和异步调用时发现了一个不寻常的问题。我想在一个循环中运行多个Ajax调用。我写了下面的代码,其中rand.php只是休眠一秒钟并返回一个随机数。令人惊讶的是,它是同步执行的,大约需要20秒才能完成 $(document).ready(function () { $([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]).each(function() { var number = this;

昨晚我在玩jQuery和异步调用时发现了一个不寻常的问题。我想在一个循环中运行多个Ajax调用。我写了下面的代码,其中rand.php只是休眠一秒钟并返回一个随机数。令人惊讶的是,它是同步执行的,大约需要20秒才能完成

$(document).ready(function () {
    $([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]).each(function() {
        var number = this;

        $.get("rand.php", function(data) {
            $('#'+number).html(data);
        });
    });
});
PHP代码如下所示

<?php
sleep(1);
echo rand(); 
?>
我不认为jQuery/Javascript专家可以解释这种行为?这是浏览器的限制吗?为什么只有当URL不同时,它才会像我期望的那样运行


编辑-而不是回复,这是使用最新的Chrome和Firefox 5/6。我确实在IE中尝试过,IE确实缓存了它,所以我忽略了这一点,专注于Chrome。有趣的是,在IE9中,第一个页面在第一次页面加载时按预期工作,但在重新加载时只显示缓存结果。

您在ie中,不是吗。令人不快的坏IE用户!IE缓存获取请求,就像它是任何其他内容一样。Jquery有一个内置函数来解决这个问题:

$.ajaxSetup({ cache : false });
这将添加一个漂亮的扰流板来处理这个问题。但是为什么要在其他浏览器中添加扰流板呢?所以我通常会这样做:

if(!+"\v1"){
    $.ajaxSetup({ cache : false });
}

这是IE的测试,并仅在该浏览器中设置

你确定这不是缓存问题吗?你在其他浏览器中尝试过吗?这可能是缓存问题。看看当你发帖子时会发生什么。看看这个问题:是的,不是缓存问题。我想这会使它立即返回。看看上面的链接,没有骰子。这并不是说我期望所有人都能跑,但我期望的是超过1人秒,这就是我得到的。我认为这个问题是误导性的。实际问题不是jQuery。如果从PHP脚本中删除sleep语句,我几乎可以肯定所有20个请求都是即时的。它与缓存或命中相同的URL无关。您是否在PHP前面使用web服务器?另外,您的web服务器在任何给定时间允许打开多少进程,每个进程有多少线程?如果从命令行直接请求相同的URL,是否会看到相同的行为?跳过所有JavaScript和AJAX,首先验证这不是服务器问题。关于检测铬中的IEF。。。还有Firefox。根本没有真正测试IE。此外,如果它是缓存的,那么它是否应该立即返回,而不是运行所需的20秒左右?那么它必须是服务器端。我认为时间延迟是打电话的延迟。想发布一个小提琴吗?当然,服务器配置?它实际上只是一个标准的xampp设置,而不是配置。我不知道服务器端会是什么。
if(!+"\v1"){
    $.ajaxSetup({ cache : false });
}