Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
2并发ajax请求—一慢一快,两者同时结束_Ajax_Apache_Jquery - Fatal编程技术网

2并发ajax请求—一慢一快,两者同时结束

2并发ajax请求—一慢一快,两者同时结束,ajax,apache,jquery,Ajax,Apache,Jquery,我必须(通过Ajax)同时查询2个脚本 我确信其中一个很快,它只显示一些html,第二个是使用Web服务进行查询 快速请求总是在第一个请求之后发送。但是,尽管我做了所有的尝试,快速/快速的尝试永远不会在缓慢的尝试之前完成 用于调用第一个长ajax请求的代码: $.ajax({ type: "POST", url: '/fr/ajax_flight_get_other_oneway', cache: false, dataType:

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

我确信其中一个很快,它只显示一些html,第二个是使用Web服务进行查询

快速请求总是在第一个请求之后发送。但是,尽管我做了所有的尝试,快速/快速的尝试永远不会在缓慢的尝试之前完成

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

$.ajax({
        type: "POST",
        url: '/fr/ajax_flight_get_other_oneway',
        cache: false,
        dataType: 'json',
        success: function(data) {
           // some treatment
        }
$.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
        }
第二个更快的ajax请求的代码:

$.ajax({
        type: "POST",
        url: '/fr/ajax_flight_get_other_oneway',
        cache: false,
        dataType: 'json',
        success: function(data) {
           // some treatment
        }
$.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中的内容?

将慢的放在快的成功回调中。这将保证fast请求在启动第二个请求之前先完成。

可能是浏览器决定对这两个请求使用相同的HTTP连接(使用HTTP头保持活动状态),因此它似乎处于排队状态。这不是jQuery的事情——浏览器可以选择这样做

使用浏览器的HTTP网络流量调试器查看情况是否如此

否则,您的web服务器可能只允许每个客户端有一个连接,并且正在对它们进行排队。见此:

试试这个:

$.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
            }
        });
    }
});​

我找到了我问题的解决方案,它与会议有关

该会话基于文件系统。因此,第一个(长查询)是锁定会话文件,然后第二个被强制等待长查询完成

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

感谢您的帮助

jQuery不会对请求排队。似乎只有一个工作人员在apache中监听以处理对该网站的请求。