2同意ajax请求一个慢,一个快,两个同时结束

时间:2012-04-17 13:53:06

标签: ajax apache jquery

我必须同时查询(通过Ajax)2个脚本。

我肯定知道一个非常快,它只显示一些html,第二个是使用WebService进行一些查询。

快速请求始终在第一个请求之后发送。但是在我所有的尝试中,快速/快速的尝试,在慢速之前永远不会完成。

代码用于调用第一个长ajax请求:

$.ajax({
        type: "POST",
        url: '/fr/ajax_flight_get_other_oneway',
        cache: false,
        dataType: 'json',
        success: function(data) {
           // some treatment
        }

第二个更快的ajax请求的代码:

$.ajax({
        type: "POST",
        url: '/fr/load_back_forflight?id=SN4422_23',
        cache: false,
        data: "comps="+compSelectedCodes+"&escale="+escale,
        dataType: 'json',
        success: function(data) {
           // some treatment
        }

是否应该更改Apache中的内容或者是否在jQuery中?

4 个答案:

答案 0 :(得分:1)

我找到了问题的解决方案,它与会话相关联。

会话基于文件系统。所以第一个(长查询)是锁定会话文件,然后第二个被迫等待长查询完成。

通过在DB中使用会话,我已经解决了这个问题。

感谢您的帮助

答案 1 :(得分:0)

将慢速放入快速回调的成功回调中。这将保证快速请求将在开始第二个请求之前完成。

答案 2 :(得分:0)

浏览器可能决定为两者使用相同的HTTP连接(使用HTTP标头保持活动状态),因此它显示为排队。这不是一个jQuery的东西 - 它是浏览器可以选择做的事情。

使用浏览器的HTTP网络流量调试器查看是否属实。

如果没有,那么您的Web服务器可能只允许每个客户端进行一次连接并对它们进行排队。见:

How do I configure Apache2 to allow multiple simultaneous connections from same IP address?

答案 3 :(得分:0)

试试这个:

$.ajax({
    type: "POST",
    url: '/fr/ajax_flight_get_other_oneway',
    cache: false,
    dataType: 'json',
    success: function(data) {
        // some treatment
        //The code for the second faster ajax request:
        $.ajax({
            type: "POST",
            url: '/fr/load_back_forflight?id=SN4422_23',
            cache: false,
            data: "comps=" + compSelectedCodes + "&escale=" + escale,
            dataType: 'json',
            success: function(data) {
                // some treatment
            }
        });
    }
});​