gpt4 book ai didi

javascript - 如何将变量从 javascript 传递到 symfony2 Controller

转载 作者:行者123 更新时间:2023-11-28 04:16:04 25 4
gpt4 key购买 nike

我有一个模态,其中包含表格中的一些数据以及每行旁边的单选按钮。每次我单击该单选按钮时,单击按钮后相应的数据将存储在数组中。现在,我在将变量从 javascript 传递到 Controller 时遇到问题,该 Controller 是数组的第 6 个索引。

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

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

选定的变量是我分别在文件中的某个位置存储选定数据的位置。下面是我的 Controller ,我尝试显示以下内容,但输出均为空。

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

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

我真的很困惑,因为单击按钮后它会警告“确定”,但是数据没有发送到 Controller 。有人可以帮我弄这个吗?我们将不胜感激,谢谢。

这是我得到的输出:

Output

最佳答案

这里的问题是您刷新页面,这意味着您调用 Controller 时根本没有任何数据。在此之前发生的事情是 jQuery 调用您的 editAction 方法并等待永远不会出现的响应,因为您在 Controller 中没有返回任何内容,这是奇怪的,因为您应该收到一个错误说 Controller 应该返回一个响应

那么你必须采取什么方法来确保 Controller 从jQuery接收数据:

  1. 转储死亡:

    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
    }
  2. 返回响应中的data并在jQuerysuccess中处理它:

    在 Controller 中:

    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变量是什么类型。如果它只是一个字符串或数字,您只需 console.log(data) 即可在浏览器控制台中输出该值。

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

关于javascript - 如何将变量从 javascript 传递到 symfony2 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45834761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com