0

我必须同时查询(通过 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

4 回答 4

1

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

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

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

感谢您的帮助

于 2012-05-22T14:51:48.273 回答
0

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

于 2012-04-17T13:56:33.027 回答
0

浏览器可能决定为两者使用相同的 HTTP 连接(使用 HTTP 标头 Keep-alive),因此它出现在队列中。这不是 jQuery 的事情——它是浏览器可以选择做的事情。

使用浏览器的 HTTP 网络流量调试器查看是否是这种情况。

如果没有,那么您的网络服务器可能只允许每个客户端一个连接并且正在排队。看到这个:

如何配置 Apache2 以允许来自同一 IP 地址的多个同时连接?

于 2012-04-17T14:04:03.717 回答
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
            }
        });
    }
});​
于 2012-04-17T15:36:09.303 回答