簡體   English   中英

Ajax 頁面刷新 (barba.js) 和 POST forms - 沒有“重新提交表單”

[英]Ajax Page Refreshes (barba.js) and POST forms - no “resubmit the for form”

我純粹是在網站的前端工作,為了更流暢的頁面轉換和更好的流程,我使用了barba.js庫,我發現它非常易於使用且超級酷。

一切都很好,但只有一件事。

該項目的后端將在 Typo3 中實現,后端團隊必須對所有 forms 使用 POST。

通常,如果提交了 POST 表單並且您在新頁面上並點擊 Refresh(F5、Cmd-R 等),瀏覽器會在提示/對話中詢問您是否要“重新提交表單”。

但是,使用 barba ajax 頁面加載,這不會發生,並且在新頁面上刷新時會引發 typo3 錯誤。

所以表單提交工作正常,但是一旦在結果頁面上發布表單,當點擊刷新時它總是會拋出一個錯誤,因為可能沒有發送標題。

在此處輸入圖像描述

關於如何解決這個問題的任何想法? 這是什么原因造成的?

只需檢查參數是否存在:

$this->request->hasArgument('name'){
    try...
}

但是,它似乎沒有將 arguments 傳遞到下一個視圖。 請記住,POST 發送的 forms 不應手動刷新以避免此類情況。 常見的解決方案是在提交表單並處理其數據后立即將 controller 重定向到某個 GET 視圖(即感謝頁面)。

在控制器的操作中,您可以通過以下方式重定向它:

$this->redirect('thankYouPage'); // will redirect to `thankYouPageAction` in the same controller

或者

$this->redirectToUri('uri/to/some/existing/thank-you-page')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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