0

OK、私が思いついた私のコードをさらに投稿する必要がある場合は、お知らせください。これが可能かどうかさえわかりません。しかし、私がやりたいことは、ユーザーがキャンセル ボタン/リンクを選択したときに、PHP が Zip ファイルを作成するのを止めることです。

今私が設定したのは、ユーザーごとにアップロードされたすべてのファイルがフォームにリストされていることです。ユーザーは、圧縮してダウンロードするファイルを選択できます。ファイルを選択してダウンロード ボタンをクリックすると、フォームを保持する div が Jquery AJAX 呼び出しを介して変更され、問題なく動作します。

しかし、私は「キャンセル」/「停止」ボタン/リンクを持っています。クリックしたら、AJAX 要求で .abort を呼び出し、ユーザーが進行中の zip をキャンセルしたことを示す新しい HTML コンテンツを読み込みます。ただし、すべてのメッセージは正常に機能します。サーバーはまだバックグラウンドで zip を作成しているようで、zip が作成されるまで、リンクは応答しません (ほとんどは、新しいユーザーの要求でロードするための AJAX 要求でもあります)。

私のサイトのベースは、CakePHP フレームワークを使用しています。しかし、これは標準的な Jquery/PHP の問題に過ぎないと確信しています。

AJAX リクエストを取得して PHP が zip を作成するのを止める方法についてのアイデアはありますか?

これは私が私の AJAX を構築する方法です:

 $(document).ready(function() {
  $(".MAKEMYZIP").click(function(e) {
    e.preventDefault();
      $('.DIV-HOLDER').load('/PAGE-PREVIEWER');
      var MakeNewZipFile = $.ajax({
        url: '/makezip',
        type: 'post',
        dataType:'html',   //expect return data as html from server
        data: $('.FILE_DATA').serialize(),
        success: function(response, textStatus, jqXHR){
          $('.DIV-HOLDER').html(response);   //select the id and put the response in the html
        },
        error: function(jqXHR, textStatus, errorThrown){
          console.log('error(s):'+textStatus, errorThrown);
        }
      }); //End of AJAX call 
             //Below line makes the 'text' link visible once the make zip but clicked.
    $('.ZipLinkHolder').css("visibility","visible");
    $( ".Can_Zip_This_Zip" ).click(function() {
        MakeNewZipFile.abort();
        $('.DIV-HOLDER').html('<br/><br/><div class="CenterTxt">User has canceled Zip making process.</div>');
    });
});

});

4

0 に答える 0