如何将变量从javascript传递给symfony2控制器

时间:2017-08-23 08:40:32

标签: javascript php jquery symfony

我有一个模式,表格中有一些数据,每行旁边有一个单选按钮。每次单击该单选按钮,相应的数据将在单击按钮后存储在数组中。现在,我将一个变量从javascript传递给我的控制器,这是我的数组的第6个索引。

根据我的研究,大多数解决方案都使用ajax。我已经在我的控制器中尝试了所有可能的代码,但似乎没有收到任何东西。我在ajax调用中发送的数据没有到达控制器。 这是我的枝条文件:

<button type="button" id="selectrow" class="btn btn-primary pull-right btn-spacing">Select</button>
$(document).ready(function () {
        $('#selectrow').click(function () {
          var data = selected[6];

                jQuery.ajax({
                    url: "project/edit/",
                    type: "GET",
                    data: { "data": data },
                    success: function (data) {
                        alert("OK");
                    },
                    error: function (data) {
                        alert("fail");
                    }
        });
});

所选变量是我将所选数据分别存储在文件中某处的位置。下面是我的控制器,我试图显示以下内容,但输出都是空的。

public function editAction(Request $request) {
       if ($request->isXmlHttpRequest()) {
          dump($request->getContent());
       }    

       dump($request->request->get('data'));
       dump($request->query->get('data'));
}

我真的很困惑,因为点击按钮后它会发出'OK'警告,但数据没有被发送到控制器。有人可以帮我弄这个吗?非常感谢,谢谢。

这是我得到的输出:

Output

1 个答案:

答案 0 :(得分:0)

这里的问题是你刷新页面意味着你在没有任何data的情况下调用控制器。之前发生的事情是 jQuery 调用你的editAction方法并等待一个永远不会出现的响应,因为你在Controller中没有返回任何特殊的东西,因为你应该得到一个错误,说明一个{ {1}}。

那么您必须采取哪些方法来确保Controller从Controller should return a Response收到data

  1. jQuerydump

    die
  2. 在回复中返回public function editAction(Request $request) { if ($request->isXmlHttpRequest()) { dump($request->getContent()); } dump($request->request->get('data')); dump($request->query->get('data')); die(); // terminate the current script } 并在data s jQuery中处理:

    在控制器中:

    success

    return new JsonResponse($request->request->get('data')); 成功:

    jQuery

    我不知道$(document).ready(function () { $('#selectrow').click(function () { var dataSend = selected[6]; jQuery.ajax({ url: "project/edit/", type: "GET", data: { "data": dataSend }, success: function (data) { console.log(data...); if(data == dataSend) console.log("equivalent"); }, error: function (data) { alert("fail"); } }); }); 变量的类型。如果它只是一个字符串或一个数字,你只能data,它应该在浏览器控制台中输出值。

  3. 如果有效,请发表评论......