我必须同时查询(通过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中?
答案 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
}
});
}
});