2017-06-21 81 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

相关问题