[英]PHP File download interferes with AJAX Form Submission
我已經在頁面上嵌入了Wordpress Gravity Form。 提交后,我獲取一個ACF文件,並通過類似的鈎子下載它。
function masterstart_brochure_download() {
$file = get_field('brochure_file');
header("Content-Disposition: attachment; filename=\"" .
basename($file['url']) . "\"");
header("Content-Type: application/force-download");
header("Content-Length: " . $file['sizes']['thumbnail']);
header("Connection: close");
exit();
}
add_action( 'gform_after_submission_21', 'masterstart_brochure_download', 10, 2 );
重力表通過AJAX提交。 表單提交后,我將打開一個模式,感謝用戶提交表單。
/* After Form Submission */
$(document).on("gform_confirmation_loaded", function (e, form_id) {
// If the brochure download form is submitted
if(form_id == 21) {
var brochureModal = $('[data-remodal-id=brochure-
download]').remodal();
brochureModal.open();
}
});
上面的Wordpress掛鈎可正確下載文件,但會阻止AJAX調用完成並成功提交表單。
我不確定我缺少什么。
更新1:我想添加
ob_clean();
flush();
可能有幫助,但無濟於事。
因此,您的問題是您的AJAX文件返回了要下載的文件,而您的JS之后沒有繼續。
這是因為AJAX不能嚴格用於下載文件,因此,如果在Inspector上檢查“網絡”選項卡,您將看到文件未正確返回(在Firefox中甚至不返回狀態代碼!)
如果AJAX調用永不結束,則它永遠不會成功或失敗,因此不會有回調!
您始終可以使用iFrame觸發下載或彈出窗口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.