簡體   English   中英

PHP文件下載會干擾AJAX表單提交

[英]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.

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