Ajax - 如何将值从表单传递给Controller?

时间:2017-06-21 13:49:39

标签: php ajax symfony get

我有以下表格:

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

我想将get值传递给我的控制器,该控制器有/add/{email}

的路由

控制器代码:

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

如何传递获取值? 目前的代码:

$(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");
            }
        })
    })
})

2 个答案:

答案 0 :(得分: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

然后在你的控制器中你可以做到:

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");
        }
    })
 })

})

答案 1 :(得分:-1)

尝试以下方法:

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

或尝试:

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