2017-06-21 39 views
1

我有以下形式:Ajax - 如何將值從窗體傳遞給Controller?

<form> 
    <input type="email" name="email"> 
    <button>Join</button> 
</form> 

而且我想通過獲得價值到我的控制器,具有路線/add/{email}

控制器代碼:

public function addToNewsletterAction(Request $request){ 
    //Some actions 
} 

我如何通過GET值? 當前代碼:

$(document).ready(function() { 
    $("#newsletterButton").on("click", function() { 
     var email = $('.email').val(); 
     $.ajax({ 
      type: 'get', 
      url: "/add/newsletter/{email}", 
      data: $("form").serialize(), 
      succes: function() { 
       alert("Done"); 
      } 
     }) 
    }) 
}) 
+0

你嘗試過這麼遠嗎? –

+0

顯示你的ajax。 – Arcv

+0

我剛纔更新問題 – Chrzanek

回答

3

首先,你需要改變,是因爲在這裏你送"/add/newsletter/{email}"至極,您可以發送一個變量是不是你想要的:

$(document).ready(function() { 
    $("#newsletterButton").on("click",function() { 
     var email = $('.email').val(); 
     $.ajax({ 
      type:'get', 
      url: "/add/newsletter/".email, 
      data:$("form").serialize(), 
      succes: function() { 
       alert("Done"); 
      } 
     }) 
    }) 
}) 

然後在你的控制器:

public function addToNewsletterAction($email){ 
    //do something with the email var 
}  

但你應該嘗試只通過你的網址送東西像ID,以便更改與您的路線:/add/newsletter

然後在你的控制器,你CAND做:

public function addToNewsletterAction(Request $request){ 
    $email = $request->request->get('email'); 
    $other = $request->request->get('other') 
}  

不要忘記在你的.twig改變:url:"/add/newsletter"

你的代碼有問題。您的按鈕沒有一個ID,我至極本來應該是newsletterButton這裏

編輯 ,讓你可以使用的getElementById並在您的按鈕添加一個onClick功能的電子郵件。通過類似的東西,改變你的形式:

<form> 
    <input type="email" name="email" id="email"> 
    <button onclick="myFunction()">Join</button> 
</form> 
在腳本

然後添加myFunction的:

function myFunction() { 
    var email = document.getElementById("email").value 
    $.ajax({ 
     type:'get', 
     url: "/add/newsletter/", 
     data: { 
      'email' : email, 
     } 
     succes: function() { 
      alert("Done"); 
     } 
    }) 
}) 

})

+0

我有Json響應代碼,如果我傳遞像/add/newsletter/[email protected]這樣的參數,它工作正常。但我堅持從形式中獲得價值。 – Chrzanek

+0

@Chrzanek我剛剛改變了它;) –

+0

我喜歡你的方法,但請不要通過路由和獲取參數發送數據。 JS沒有使用'$('。email')'因爲這個類不存在 – Chris

-1

嘗試以下操作:

public function addToNewsletterAction(Request $request){ 
    $email = $request->email; 
} 

或者嘗試:

public function addToNewsletterAction($email=''){ 
    echo $email; //or whatever you want to do with email 
} 
+0

我在裏面的代碼,但我不知道如何通過與AJAX – Chrzanek

+0

表格傳遞請求,如果他有路由參數電子郵件,您應該設置路由的定義中的默認值。不在控制器操作 – Chris

相關問題