2016-12-01 25 views
0

我做了一些自定義鳳凰形式提交,使用jQuery阻止重載(因爲我的登錄表單是模態),形式:鳳凰權威性與JS,「put_flash」沒有顯示出來

<form id="loginForm" role="form"> 
<input type="hidden" name="_csrf_token" value="<%= get_csrf_token() %>"> 
... 

jQuery的

<script> document.getElementById("loginbutton").addEventListener("click", function(event){ 
    event.preventDefault() 
    $.ajax({ 
     url:'/auth/identity/callback', 
     type:'post', 
     data:$('#loginForm').serialize() 

});</script> 

而且AuthController,應該重新渲染主網頁,它發送整個網站的新的HTML中的回調,但不會重新呈現實際的網站:

{:error, reason} ->  
    conn 
    |> put_flash(:error, "Could not authenticate. Error: #{reason}")  
    |> render(Final.PageView, "landingapp.html", current_user: current_user, current_auths: auths(current_user)) 

可能jquerys preventdefault()成爲原因:錯誤閃存不顯示?我錯過了什麼?

+1

爲什麼不只是使用json的例子,並相應地改變頁面,而不是試圖重新渲染它?只需發送'{「錯誤」:「某種原因」}'並在客戶端處理它,顯示一個錯誤或什麼 – JustMichael

回答

1

據我可以告訴你基本上打破了你想使用的機制。 put_flash函數將數據放入flash session scope,您可以在渲染中訪問它。但是你不會再次加載頁面,並且你正在使用ajax。 preventDefault()使頁面不能重新加載(您可能需要)。

您可以像使用ajax一樣使用它,只將數據作爲json或每個請求的重新加載頁面來處理。但請不要使用ajax來獲取新的html和交換它....

我甚至不知道你爲什麼首先使用jQuery。