异步ajax请求实际上不是异步(JQuery和Zend)

时间:2011-09-27 15:32:14

标签: php jquery ajax zend-framework

我有一堆ajax请求:

$("someTable tr").each(function() {

    // send the data.
    var scriptURL = "/module/action/data/" + $(this).find(".data").html() + "/";

    document.cyonVars.xhrPool[count] = $.ajax({
    type: "GET",
    url: scriptURL,
    queue: "autocomplete",
    cancelExisting: true,
    dataType: 'json',

    success: function(data){

       // do something

        }

    }
    });
    count++;
})

当这些请求正在运行时,用户可以按一个按钮。这会触发另一个ajax请求。这样的事情:

var scriptURL = "/module/anotheraction/" +
data) + "/";

$.ajax({
    type: "GET",
    url: scriptURL,
    queue: "autocomplete",
    cancelExisting: true,
    dataType: 'json',

    success: function(data){
    // Do another thing
    }
});

来自第一个响应asynchrone的动作的请求。当用户触发第二个请求时,等待其他请求完成。但第二个请求应该提前进行。我已经使用session_write_close()没有改变任何东西。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

我不太确定,它应该进一步加工。浏览器对同一服务器的连接有限制,如果请求回复您的应用程序需要很长时间,可能会停止几个或多个请求。只是想想,异步请求是异步拍摄的(ajax请求继续执行后的代码),但请求是按顺序执行的。

答案 1 :(得分:0)

问题是Zend_Session :: Start();

在进行异步请求时我不得不避免使用Zend_Session