こんにちは私はフォーム送信クリックでphpを使用してフォームを送信していますjqueryを使用して新しいウィンドウを開いています。
ウィンドウを開いた後、phpフォームがそのページに送信されますが、ユーザーがアップロードしたlocalhostにファイルをアップロードした後、新しいタブに表示したいファイルデータを処理しているため、ファイルサイズに応じて5〜10分かかります処理されたデータはjqueryajaxを使用して進行しますが、新しいウィンドウタブではajaxリクエストは送信されていますが、送信されたリクエストをクリックすると、クロームネットワークタブでサーバーに送信されていません。これが表示されます。
暫定ヘッダーが表示されます
サーバーが応答を返さないことを意味します。
しかし、フォームの送信が完了し、ファイルデータが処理された後、jqueryajaxリクエストはステータス200kと応答を返します
これがjqyeryを使用したフォーム送信の新しいウィンドウを開くコードです
$(".btnDataMigrate").click(function (e) {
var fileName = $("#filesToUpload").val();
var path = $(this).attr("data-popupUrl")
if(fileName) {
window.open(path,'Data Migrate Files Upload Status','width=800,height=800');
} else { // no file was selected
}
});
これがjqueryajaxリクエストコードです
function fetch_files_progess(){
$.ajax({
type:'post',
url:base_path()+'/data_migration/fetch_completed_files',
data:{},
dataType:'json',
success: function(response){
$('#notice').html(response.result);
},
error: function(response){
}
});
}
fetch_files_progess();
setInterval(function(){fetch_files_progess();}, 9000);
フォーム送信プロセス中にjqueryajaxリクエストから応答を取得する方法を教えてください。
また、他のローカルホストページを開く場合は、フォームの送信が処理されるまで開かないでください。
実際、phpフォームの送信中に新しいタブでプロセスファイルのステータスを完了したいので、新しいタブでjqueryajaxを使用して処理済みファイルのステータスを検索しています。私はxampplocalhostを使用しています。
ありがとう
問題は、サーバー側がまだリクエストを処理していることでした。PHPやASPなどのセッションデータを使用している場合、セッションデータはajaxが終了するまでロックされます。したがって、ユーザーが引き続きWebサイトを閲覧できるようにするには、session_write_close()を呼び出す必要があります。これにより、セッションが保存され、ロックが解除されて、続行を待機している他のページが続行されます。これがないと、ロックが解除されるのを数ページ待つことができます。
session_write_close()を使用します。私の問題を解決しました...
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加