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>');
});
});
});