javascript
  • php
  • jquery
  • forms
  • laravel-5.2
  • 2017-01-02 68 views 0 likes 
    0

    我正在使用Laravel 5.2並在其他人的代碼上工作,它具有缺少必要的表單值的字段,以便在服務器端存儲表單值。我添加了一個新的隱藏輸入字段,並通過以下代碼設置它的值。如何在不更改提示的情況下將用戶重定向到新頁面

    <form method="POST"> 
        <input type="hidden" value="" id="hidden_field" /> 
        <input type="submit" class='action_button' data-action='save' /> 
    </form> 
    
    $('.action_button').on('click', function(event) { 
        event.preventDefault(); 
        $('#hidden_field').val($(this).data('action'); 
        $('#form').submit(); 
    }); 
    

    現在表單被提交,數據存儲在服務器端,並在控制器的末尾有以下代碼。

    return redirect(url('home')); 
    

    雖然邏輯現在能正常使用,每當我試圖做出一些改變並提交表單,服務器端告訴瀏覽器重定向,但瀏覽器認爲我有未保存的更改,以便它顯示我的提示不保存退出或留下。我怎樣才能避免它,而不完全禁用提示?

    +0

    爲什麼不在頁面加載時更改隱藏的輸入!不要點擊提交。我認爲這是'Js'問題 –

    +0

    ,因爲該表單有多個操作按鈕,我需要在表單提交之前決定點擊哪個按鈕並相應地發送操作。 – Anfal

    +0

    如果你使用ajax怎麼辦? – Mephiztopheles

    回答

    1

    經過長時間的調試,我的問題得到了解決,並且由於某個全局JS文件對頁面上的每個輸入按鈕都有window.onbeforeunload,導致出錯。我發佈這個 任何其他誰可能面臨這個問題。確保你有如下的點擊功能。

    $('.action_button').on('click', function(event) { 
        event.preventDefault(); 
        window.onbeforeunload = null; 
        $('#hidden_field').val($(this).data('action'); 
        $('#form').submit(); 
    }); 
    
    +1

    對於記錄來說,'onbeforeunload'不是,也從來不是瀏覽器的默認功能。除非您在代碼中主動添加處理程序(在這種情況下,這是其他同事的做法),否則您不會首先面對問題。 –

    0

    瀏覽器顯示提示信息,因爲您正在使用後處理方法。我認爲它在Firefox上提示,但不在谷歌瀏覽器上。

    解決的辦法是改變的帖子得到的方法。當然,如果你發佈數據,你不應該那樣做。你也可以嘗試使用一些JavaScript代碼,但是當我遇到非常類似的問題時,它並沒有幫助。

    +0

    我不認爲使用獲取表單而不是帖子是接受發佈請求的路線上的一個好主意。 – Anfal

    +0

    這不是事實。您可能正在考慮在瀏覽瀏覽器歷史記錄時獲得的「重新發布表單數據」。 –

    +0

    @Anfal如果它必須是一個郵政路線,那麼我的解決方案不適合你。有時候人們會錯誤地選擇發佈和獲取路線,這就是爲什麼我向你提出解決方案的原因。 –

    相關問題