【问题标题】:Multiple AJAX calls with delay in server多个 AJAX 调用在服务器中有延迟
【发布时间】:2013-07-04 06:49:35
【问题描述】:

我对 Ajax 调用和我的 apache 服务器的问题感到抓狂。

我有一些脚本 php 和一个带有 javascript 的简单 html。

var i = 0;
var t = 0;
function comenzar(){
    $.get('testAjax2.php', function (data){
        $('#container').append(data);
    });
    t = setTimeout(function(){
        $('#container').append('timeout<br/>');
        i++;
        $.get('testAjax.php?i='+i, function (data){
        $('#container').append(data);
        });
        if(i == 10)
            clearTimeout(t);
    }, 100);
}

PHP文件testAjax2.php代码:

sleep(10); //sleeps for 10 seconds
echo "done! testAjax2.php";

PHP文件testAjax.php代码:

echo $_GET['i']."<br/>";

人物 你觉得这段代码怎么样?

在完成第一个调用之前,我无法进行任何 ajax 调用。只有在 testAjax2 ajax 调用完成时才会显示第一。

当第一个有服务器延迟并继续调用时,我如何进行多个 ajax 调用?

我完全迷失了,我不知道关于 Ajax(或者可能是 Jquery?)的这种行为

非常感谢

编辑:对不起我的英语

【问题讨论】:

  • 你是什么意思?是否需要在第一次 AJAX 调用完成后才执行第二次 AJAX 调用?
  • 你的代码真的没有任何意义,你的写作也是。请尝试至少重写英文文本。
  • 没错!我是这个意思!
  • 然后在上一个的成功回调中调用下一个ajax请求,而不是通过setTimeout。

标签: jquery ajax


【解决方案1】:

以下是满足您要求的简单示例。我只是添加了一个成功回调,这意味着分配给成功回调的函数将在第一次 AJAX 调用成功后调用一次。在回调函数中添加下一个 AJAX 调用。

$.ajax('testAjax2.php', 
        success: callNextFunction,            
});

function callNextFunction(data)
{
    $('#container').append(data);

    $.get('testAjax.php?i='+i, function (data){

        $('#container').append(data);

    });
}

【讨论】:

  • 这不是我想要的...这样做的意思是知道第一个带有超时功能的ajax调用是如何进行的(并显示一些关于第一个testAjax2.php的信息文本)。如果第一个 ajax 调用持续 10 分钟(用我的数据库做事)怎么办?我只想知道完成 test2ajax 函数还剩多少秒(定期调用超时)。对不起我的英语!
  • @MrViSiOn 如果您进行 ajax 调用等待 10 分钟的响应,这意味着您正在使用一个 HTTPD 线程整整 10 分钟。由于大多数浏览器只允许 2 个并发 HTTPD 线程,我可能倾向于不访问您的网站。
  • @MrViSiOn,为什么你真的需要等 10 分钟才能打电话。你能解释一下你的要求吗?
  • 1.长 10 分钟的呼叫将以超时结束。没有浏览器等待 10 分钟得到响应。 2. 超时应该为你做什么回调函数不能做什么?在您启动 ajax 请求之前显示微调器或其他内容,并在收到服务器响应时再次隐藏它。
  • 好的,我试着解释一下。 testAjax2.php 发出大量 cURL 请求(一百个)并在数据库中编写 HTMl 答案,我只想通过第二个 ajax 调用知道该表有多少行用于显示 0/100、1/100、2/100,网页中的 3/100 等等。清除?谢谢你的一切......
【解决方案2】:

实际上问题在于 ajax 行为。因为 ajax 是异步的,所以它不会等待响应并且会执行下一个 ajax 请求,所以如果您有任何依赖于第一个 ajax 请求的编译或响应值的语句,那么您应该将该代码放在 ajax 的成功事件中方法。

【讨论】:

  • 请试试这个代码。试一试,你会发现没有看到 1,2,3,4,5... 而第一个 ajax 调用还没有完成...
  • 好的,我试着解释一下。 testAjax2.php 发出大量 cURL 请求(一百个)并在数据库中编写 HTMl 答案,我只想通过第二个 ajax 调用知道该表有多少行用于显示 0/100、1/100、2/100,网页中的 3/100 等等。清除?谢谢你的一切......
猜你喜欢
  • 1970-01-01
  • 2013-03-10
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多