簡體   English   中英

jquery - 2 ajax 同時調用

[英]jquery - 2 ajax calls simultaneously

我想同時運行 2 個 AJAX 調用。 我嘗試了下面的代碼,但它等待ajax ({export.php})完成,然后運行ajax({display.php})

我想同時運行這 2 個 AJAX 調用。 例如,當 export.php 正在運行時,它也應該同時運行 display.php。 我怎樣才能做到這一點?

當我單擊一個按鈕時,它會調用 export.php 將數據庫表轉換為 CSV 文件。 我還想顯示進度條,即完成了多少條記錄, 1% , 2% ... 100% 該百分比值寫入 display.php 文件中,因此要制作進度條,我需要同時運行 2 個 AJAX 調用。

$('.tocsv').on('click', function() {
  var display = setInterval(function() {
    $.ajax({
      url: 'display.php',
      method: 'get',
      success: function(data) {
        console.log(data);
      }
    });
  }, 500);

  $.ajax({
    url: 'export.php',
    method: 'post',
    success: function() {
      clearInterval(display);
    }
  });
});

編輯問題出在 display.php 文件中,我編寫了session_start() 我剛剛刪除了該行並將 ajax 代碼更改為此

                url: 'display.php?file=<?=session_id()?>',
                success: function (data) {
                    $('#res').html(data);
                }
            });

但是為什么當我寫 session_start() 時它不起作用?

在 AJAX 中,第一個字母 A 表示“異步”。 所以調用異步方式不是這里的問題。 問題在於在 setInterval 內發出 ajax 請求。 我非常確定您的服務器在您給定的時間延遲(即 500 毫秒)內沒有響應,並且您每半秒就向您的服務器發送多個請求。 當一個請求完成時,您已經向您的服務器發出了至少 4 或 5 個請求,這是您問題的根本原因。 刪除 setInterval,如果您希望在 0.5 秒后調用,請使用 setTimeout。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM