服务器阻塞并行ajax请求

时间:2014-05-28 08:39:30

标签: php jquery ajax

情况是我使用API​​来获取一些数据并更新我的数据库。我想向用户显示更新。

所以我的ajax请求是这样的。

$.ajax({
    url:  '<?php echo base_url() ?>add_products/',
    data: "store_id="+store_id,
    type: 'POST',
    dataType: 'json',
    async : true,
    success: function(response) {
        if ( response.result == 'success') {
           //some data
        } else {
            genError();
        }
    }
});

我试图让这个过程更新。

    $.ajax({
        url:  '<?php echo base_url() ?>get_product_progress/',
        data: "store_id="+store_id,
        type: 'POST',
        dataType: 'json',
        async : true,
        success: function(response) {
            if ( response.result == 'success') {
                console.log(response);               
            } else {
                genError();
            }
        }
    });

我没有使用任何php会话。我传递了从DB获取值的商店ID。我想发送1个添加产品的请求和其他1个请求来检查添加了多少产品。

问题是第1次添加产品的请求,获取进度调用没有进展。只有在添加产品请求完成后才能获取进度调用。我希望它们是平行的。

我发现它的服务器问题。服务器阻止第二个请求,直到第一个请求完成。那么如何让服务器在完成时返回一个ajax请求并相互独立。

1 个答案:

答案 0 :(得分:0)

您可以使用$.when

Here is a good blog post about it.
Docs.

示例:

$.when(
    $.ajax({
      url:  '<?php echo base_url() ?>add_products/',
     data: "store_id="+store_id,
     type: 'POST',
    dataType: 'json',
    async : true,
    success: function(response) {
        if ( response.result == 'success') {
           //some data
        } else {
            genError();
        }
      }
  });
).then(function() {
    $.ajax({
        url:  '<?php echo base_url() ?>get_product_progress/',
        data: "store_id="+store_id,
        type: 'POST',
        dataType: 'json',
        async : true,
        success: function(response) {
            if ( response.result == 'success') {
                console.log(response);               
            } else {
                genError();
            }
        }
   });
});