javascript - 如何将ajax调用中的数组传递给 Controller ​​并使用Symfony 3返回它

标签 javascript php jquery ajax symfony

您好,感谢您帮助我,我有一个 ajax 调用,其中包含我想发送到 Controller 的数据,以便我可以稍后删除指定的数据。目前我想显示 Controller 中给定的 javascript。提前为我的英语感到抱歉,这不是我的母语。

它当前返回一个 JsonResponse 来测试该方法是否被调用,但我想返回给定的 javascript 数组(播放日志),我该怎么做?

Javascript:

<script type="text/javascript">
       $(document).ready(function () {
           $('#deleteBtn').click(function () {
               var playlogs = [];

               $.each($("input[name='playlog']:checked"), function () {
                   playlogs.push($(this).val());
               });
               var confirmText = "Are you sure you want to delete this?";
               if (confirm(confirmText)) {
                   $.ajax({
                       type: "delete",
                       url: '{{ path('playlog_delete_bulk') }}',
                       data: playlogs,
                       success: function () {
                           alert("selected playlogs: " + playlogs.join(", "));
                       },
                   });
               }
               return false;
           });

       });
   </script>

在 PlayLogController 中删除BulkAction:

/**
 * @Route("/delete/bulk", name="playlog_delete_bulk")
 */
public function deleteBulkAction(Request $request)
{
    if ($request->isXMLHttpRequest()) {
        return new JsonResponse(array('data' => 'Successfully called the named route playlog_delete_bulk  '));
    }

    return new Response('This is not ajax!', 400);
}

最佳答案

您可以将播放日志作为 json(或任何其他格式,取决于数据)发送。通过$request->getContent()读取请求体并在php数组中解码。

例如:

<script type="text/javascript">
   $(document).ready(function () {
       $('#deleteBtn').click(function () {
           var playlogs = [];
           $.each($("input[name='playlog']:checked"), function () {
               playlogs.push($(this).val());
           });

           var confirmText = "Are you sure you want to delete this?";

           if (confirm(confirmText)) {
               $.ajax({
                   type: "delete",
                   url: '{{ path('playlog_delete_bulk') }}',
                   data: JSON.stringify(playlogs),
                   success: function (data) {
                      alert("selected playlogs: " + data.join(", "));
                   }
               });
           }
           return false;
       });

   });

/**
 * @Route("/delete/bulk", name="playlog_delete_bulk")
 */
public function deleteBulkAction(Request $request)
{
    if ($request->isXMLHttpRequest()) {
        return new JsonResponse(json_decode($request->getContent()));
    }

    return new Response('This is not ajax!', 400);
}

关于javascript - 如何将ajax调用中的数组传递给 Controller ​​并使用Symfony 3返回它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45354521/

相关文章:

javascript - 基于元素实际大小的中心闪光元素

javascript - Dom 迭代导致 webview 渲染一半

php - 如何在 ubuntu 服务器上安装多个客户端证书?

php - Laravel:SQL更新当前时间

javascript - 如何制作弹出帮助/信息消息?

javascript - 通过 JavaScript 更改时,HTML 标签将不接受我的 CSS 类

javascript - jQuery 删除 SlideUp 上的类

PhpMyAdmin 错误 : 403 forbidden

javascript - 如何在 jQuery 中用变量正确替换标识符

jquery - 通过缩略图悬停进行图像交换?