Cakephp:多个异步Ajax调用未按预期工作

时间:2015-10-26 11:56:15

标签: jquery ajax cakephp asynchronous

我有两个连续的Async Ajax调用,如下所示,当我执行时,我希望'1st complete'将打印,如果它花费的时间少于call2(id = 2)反之亦然'2nd complete'将打印如果它花费的时间少于call1(id = 1)。 但是,我观察到第二个呼叫始终等待第一个呼叫完成。与Async混淆。请帮忙。

    $(function(){
       jQuery.ajax({ 
            url: 'Home/getItem', 
            data : { id : 1 }, 
            async:true,
            success: function(){ console.log('1st complete'); }
        }),
        jQuery.ajax({ 
            url: 'Home/getItem', 
            data : { id : 2 }, 
            async:true,
            success: function(){ console.log('2nd complete'); }
        })
});

当我使用核心php检查相同的功能时,它会返回预期的结果。

1 个答案:

答案 0 :(得分:2)

你看到这样的输出是因为;几乎在每个服务器端技术中都有一个会话管理。现在假设您的getItem函数/方法执行某些工作并更新会话对象。因此,默认情况下,服务器始终阻止concurrent同一用户调用同一服务器端方法。如果第一个请求正在进行,那么第二个请求将被推送到队列中。一旦第一次请求完成;挂起的请求被执行。通过这种方式,第一个请求修改的session state将可用于第二个请求,依此类推。

在.Net技术中,有一些注释使控制器/方法会话无法识别,因此可以进行并发的ajax调用。通过这些注释,我们声明相关的控制器/方法不处理会话状态,因此可以同时调用。

您可以在下面的问题中阅读更多相关信息:

Why would multiple simultaneous AJAX calls to the same ASP.NET MVC action cause the browser to block?

同样,PHP中必须有一些东西。尝试搜索它,你就会得到线索。